График распределения в python

sb25 спросил: 10 мая 2018 в 03:58 в: python

Мне нужна ваша помощь в понимании графика распределения. Я изучал эту ссылку. В конце сообщения они упомянули:

Из графика видно, что в большинстве случаев прогнозы были правильными (разность = 0).

Так что я не могу понять, как они анализируют график.


2 ответа

Evgeny ответил: 10 мая 2018 в 06:48

Вы можете думать о графе плотности, что он показывает относительное количество вхождений данных при заданных значениях. Указанные значения представляют собой различия между наблюдаемыми и установленными значениями переменных. Если бы подгонка была идеальной, все различия были бы равны 0, и было бы всего один бар в 0. Подгонка не идеальна, и есть некоторые различия, большие или меньшие, чем 0, но они не слишком далеки от нуля .

Вывод авторов-авторов, вероятно, слишком силен: график не доказывает, что различия близки к нулю, но предполагает, что различия центрированы вокруг нуля. Как правило, это хороший результат для линейной регрессии.

Есть решение
Anthony ответил: 10 мая 2018 в 04:44

Чтобы развернуть обсуждение в комментарии, рассмотрите следующий код:

plt.figure(figsize=(12,8))
plt.scatter(range(len(y_test)), y_test, marker='d', c='red')
plt.scatter(range(len(predictions)), predictions, marker='d', c='blue')
plt.scatter(range(len(y_test)), (y_test - predictions), marker='^', c='green')

Он покажет вам следующий график. Распределение y_test показано в красном алмазе. Распределение predictions показано синим алмазом. Если вы вычтите каждую точку y_test с помощью predictions, это приведет к зеленому треугольнику. Поскольку мы пытаемся предсказать советы, мы хотим минимизировать ошибку между test data, которая является фактическими данными, и predictions, которые мы сделали с машинным обучением.

Если вы берете все эти зеленые треугольники и делаете distplot out из него он покажет вам изображение, которое вы прикрепили к своему вопросу. Ниже приведены распределения каждой переменной:

# Code to reproduce the plot below
fig = plt.figure(figsize=(12,8))ax = fig.add_subplot(311)
sb.distplot(y_test)
plt.title('y_test')
plt.xlim([-10, 10])ax = fig.add_subplot(312)
sb.distplot(predictions)
plt.title('predicted tips')
plt.xlim([-10, 10])ax = fig.add_subplot(313)
sb.distplot(y_test - predictions)
plt.title('y_test - predicted tips')
plt.xlim([-10, 10])plt.tight_layout()plt.show()

Дополнительное видео по вопросу: График распределения в python

Linear and Polynomial Regression in Python

Linear Regression Analysis | Linear Regression in Python | Machine Learning Algorithms | Simplilearn

Linear and Polynomial Regression with Python GEKKO