Как построить график для модели множественной линейной регрессии с помощью matplotlib - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь подогнать модель множественной линейной регрессии

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

Если бы моя модель имелатолько 3 переменные я бы использовал 3D сюжет для построения графика.Как я могу построить это?Я в основном хочу посмотреть, как выглядит линия наилучшего соответствия, или я должен построить график рассеяния с несколькими точками рассеяния и увидеть влияние отдельной переменной Y = a1X1, когда все остальные равны нулю, и увидеть линию наилучшего соответствия.Каков наилучший подход для этих моделей.Я знаю, что невозможно визуализировать более высокие измерения, хочу знать, какой должен быть лучший подход.Я отчаянно нуждаюсь в том, чтобы увидеть наиболее подходящую линию

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Вы можете попытаться визуализировать, насколько хорошо работает ваша модель, сравнивая фактические и прогнозируемые значения.Предполагая, что наши действительные значения хранятся в 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)
0 голосов
/ 23 сентября 2018

Я нашел этот пост, который является более полезным, и за ним следят
https://stats.stackexchange.com/questions/73320/how-to-visualize-a-fitted-multiple-regression-model. На основании предложений я в настоящее время просто строю графики рассеяния, такие как зависимая переменная против 1-й независимой переменной, затем против 2-й независимой переменной и т. Д.делать то же самое.Возможно, мне не удастся увидеть наиболее подходящую линию для полной модели, но я знаю, как она зависит от отдельной переменной

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