Как построить график для модели множественной линейной регрессии с помощью matplotlib

1

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

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

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

  • 0
    Попробуйте использовать tsne , метод уменьшения размерности, который особенно хорошо подходит для визуализации многомерных наборов данных
  • 0
    Одно визуальное приближение состоит в том, чтобы определить, какие два параметра оказывают наибольшее влияние на Y, а затем построить трехмерный график. Если у вас нет только двух наиболее влиятельных, само по себе это приближение не очень полезно.
Показать ещё 7 комментариев
Теги:
machine-learning
matplotlib
regression
linear-regression

2 ответа

0
Лучший ответ

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню