如何使用matplotlib绘制多元线性回归模型的图形?

5

我尝试适用多元线性回归模型

Y = c + a1.X1 + a2.X2 + a3.X3 + a4.X4 +a5X5 +a6X6

如果我的模型只有3个变量,我会使用3D图来绘制。 如何绘制这个模型呢?我想要看到最佳拟合线的样子,或者我应该绘制多个散点图并查看单个变量的效果,例如当所有其他变量为零时,Y = a1X1,然后查看最佳拟合线。 对于这些模型,什么是最佳方法?我知道不可能可视化更高的维度,想知道应该采用什么方法。我渴望看到最佳拟合线。


尝试使用tsne,这是一种特别适用于高维数据可视化的降维技术。 - Kalsi
1
我已经做了那个,而且还使用了 PCA,谢谢。 - nithin
1
@nithin那篇博客推荐使用“单变量和双变量数据检查”来确定是否应该使用多项式项 - 你尝试过吗? - duhaime
1
@duhaime提出了一个很好的观点。我个人观察到,有时对“Y”与每个“X”的散点图进行视觉检查可以提供一些问题的见解。因为它们非常容易和快速制作和检查,所以值得尝试。 - James Phillips
1
同意,我做了一些可视化,会把它放上去。 - nithin
显示剩余4条评论
3个回答

4
我找到了这篇更有用且可供参考的文章:https://stats.stackexchange.com/questions/73320/how-to-visualize-a-fitted-multiple-regression-model。根据建议,我目前只是绘制散点图,例如因变量与第一个自变量的关系、因变量与第二个自变量的关系等等。虽然我无法看到完整模型的最佳拟合线,但我知道它如何依赖于各个自变量。
from sklearn.linear_model import LinearRegression
train_copy = train[['OverallQual', 'AllSF','GrLivArea','GarageCars']]
train_copy =pd.get_dummies(train_copy)
train_copy=train_copy.fillna(0)
linear_regr_test = LinearRegression()

fig, axes = plt.subplots(1,len(train_copy.columns.values),sharey=True,constrained_layout=True,figsize=(30,15))

for i,e in enumerate(train_copy.columns):
  linear_regr_test.fit(train_copy[e].values[:,np.newaxis], y.values)
  axes[i].set_title("Best fit line")
  axes[i].set_xlabel(str(e))
  axes[i].set_ylabel('SalePrice')
  axes[i].scatter(train_copy[e].values[:,np.newaxis], y,color='g')
  axes[i].plot(train_copy[e].values[:,np.newaxis], 
  linear_regr_test.predict(train_copy[e].values[:,np.newaxis]),color='k')

2
您可以使用Seaborn的regplot函数,将预测的数据和实际数据进行比较。这不同于绘制最佳拟合线,但它可以显示模型的表现如何。 sns.regplot(x=y_test, y=y_predict, ci=None, color="b")

-1
你可以尝试通过比较实际值和预测值来可视化模型的表现。假设我们的实际值存储在Y中,而预测值存储在Y_中,我们可以绘制并比较两者。
import seaborn as sns

ax1 = sns.distplot(Y, hist=False, color="r", label="Actual Value")
sns.distplot(Y_, hist=False, color="b", label="Fitted Values" , ax=ax1)

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