Чтобы расширить обсуждение в комментарии, попробуйте выполнить следующий код:
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
, вы увидите изображение, которое вы прикрепили к вашему вопросу.Вот распределения каждой переменной:
# 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()
