Sklearn逻辑回归,绘制概率曲线图
Sklearn logistic regression, plotting probability curve graph
我正在尝试创建类似于 ISLR 示例的逻辑回归,但使用的是 python
data=pd.read_csv("data/Default.csv")
#first we'll have to convert the strings "No" and "Yes" to numeric values
data.loc[data["default"]=="No", "default"]=0
data.loc[data["default"]=="Yes", "default"]=1
X = data["balance"].values.reshape(-1,1)
Y = data["default"].values.reshape(-1,1)
LogR = LogisticRegression()
LogR.fit(X,np.ravel(Y.astype(int)))
#matplotlib scatter funcion w/ logistic regression
plt.scatter(X,Y)
plt.xlabel("Credit Balance")
plt.ylabel("Probability of Default")
但是当我想要右边的图表时,我总是得到左边的图表:
编辑:plt.scatter(x,LogR.predict(x))
是我的第二个,也是错误的猜测。
您可以通过以下语法使用 seaborn regplot
import seaborn as sns
sns.regplot(x='balance', y='default', data=data, logistic=True)
你使用 predict(X)
给出了 class 的预测。
将 predict(X)
替换为 predict_proba(X)[:,1]
,这将给出数据属于 class 1.
的概率
x_range = 80
Xs = [i for i in range(x_range)]
Ys = [model.predict_proba([[value]])[0][1] for value in range(x_range)]
plt.scatter(df['X'], df['y'])
plt.plot(Xs, Ys, color='red')
我正在尝试创建类似于 ISLR 示例的逻辑回归,但使用的是 python
data=pd.read_csv("data/Default.csv")
#first we'll have to convert the strings "No" and "Yes" to numeric values
data.loc[data["default"]=="No", "default"]=0
data.loc[data["default"]=="Yes", "default"]=1
X = data["balance"].values.reshape(-1,1)
Y = data["default"].values.reshape(-1,1)
LogR = LogisticRegression()
LogR.fit(X,np.ravel(Y.astype(int)))
#matplotlib scatter funcion w/ logistic regression
plt.scatter(X,Y)
plt.xlabel("Credit Balance")
plt.ylabel("Probability of Default")
但是当我想要右边的图表时,我总是得到左边的图表:
编辑:plt.scatter(x,LogR.predict(x))
是我的第二个,也是错误的猜测。
您可以通过以下语法使用 seaborn regplot
import seaborn as sns
sns.regplot(x='balance', y='default', data=data, logistic=True)
你使用 predict(X)
给出了 class 的预测。
将 predict(X)
替换为 predict_proba(X)[:,1]
,这将给出数据属于 class 1.
x_range = 80
Xs = [i for i in range(x_range)]
Ys = [model.predict_proba([[value]])[0][1] for value in range(x_range)]
plt.scatter(df['X'], df['y'])
plt.plot(Xs, Ys, color='red')