Scikit-learn逻辑回归,绘制概率曲线图

16

我试图创建一个类似于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)) 是我的第二个猜测,也是错误的。

3个回答

14
您可以使用以下语法使用seaborn regplot
import seaborn as sns
sns.regplot(x='balance', y='default', data=data, logistic=True)

11

您使用predict(X)函数,它将返回类别的预测结果。 现在将predict(X)替换为predict_proba(X)[:,1],它将返回数据属于类别1的概率。


0
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')

6
请添加一些代码描述来解释你的答案背景。 - William Baker Morrison
2
虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。来自审核 - double-beep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接