如何基于对目标变量的预测来绘制与Seaborn的线性回归?

时间:2018-04-14 16:05:48

标签: python plot regression linear-regression seaborn

我正在学习数据科学的基础知识,并从回归分析开始。所以我决定建立一个线性回归模型来检验这个dataset中两个变量(chemical_1chemical_2)之间的线性关系。

我将chemical_1作为预测变量(自变量)和chemical_2目标(因变量)。然后使用scipy.stats.linregress计算回归线。

from scipy import stats

X = df['chemical_1']
Y = df['chemical_2']

slope, intercept, r_value, p_value, slope_std_error = stats.linregress(X,Y)
predict_y = slope * X + intercept

我想出了如何使用matplotlib绘制回归线。

plt.plot(X, Y, 'o')
plt.plot(X, predict_y)
plt.show()

但是我想用Seaborn绘制回归。我现在发现的唯一选择如下:

sns.set(color_codes=True)
sns.set(rc={'figure.figsize':(7, 7)})
sns.regplot(x=X, y=Y);

有没有办法为Seaborn提供回归线predict_y = slope * X + intercept以构建回归图?

UPD:当使用RPyStats提出的以下解决方案时,Y轴会获得chemical_1名称,尽管它应该是chemical_2

fig, ax = plt.subplots()
sns.set(color_codes=True)
sns.set(rc={'figure.figsize':(8, 8)})
ax = sns.regplot(x=X, y=Y, line_kws={'label':'$y=%3.7s*x+%3.7s$'%(slope, intercept)});
ax.legend()
sns.regplot(x=X, y=Y, fit_reg=False, ax=ax);
sns.regplot(x=X, y=predict_y,scatter=False, ax=ax);

enter image description here

1 个答案:

答案 0 :(得分:1)

使用子图并设置轴将允许您覆盖预测的Y值。这是否回答了你的问题?

print(predict_y.name)
predict_y = predict_y.rename('chemical_2')
fig, ax = plt.subplots()
sns.set(color_codes=True)
sns.set(rc={'figure.figsize':(7, 7)})
sns.regplot(x=X, y=Y, fit_reg=False, ax=ax,scatter_kws={"color": "green"});
sns.regplot(x=X, y=predict_y,scatter=False, ax=ax, scatter_kws={"color": "green"});