Введение в машинное обучение в Python: часть III

Оглавление

  1. Оценка модели
  2. Прогнозы модели
  3. Метрики оценки регрессии
  4. Конец мысли

Это последняя часть в моей серии из трех статей Введение в машинное обучение с помощью Python. Писать было здорово, и, надеюсь, некоторые из вас что-то почерпнули из этого чтения. В последнем посте Введение в машинное обучение: часть II мы говорили о том, как разделить, обучить, протестировать и подогнать нашу модель линейной регрессии. В этом мы собираемся погрузиться в процесс после того, как мы построили и протестировали нашу модель. Для этого нам нужно оценить модель, напечатав ее точку пересечения и коэффициенты, просмотрев прогнозы наших моделей, а затем оценив ее с помощью количественного подхода. Вот наше резюме, так что давайте посмотрим, как это делается, на примерах и в коде!

Оценка модели

Чтобы начать оценку нашей модели линейной регрессии, мы собираемся распечатать точку пересечения и коэффициенты из нашей модели. Первое, что нам нужно сделать, это напечатать наш перехват с таким кодом.

print(lm.intercept_)

Это должно дать вам перехват ниже. После того, как вы это сделаете, вы можете перейти к распечатке коэффициентов. Коэффициенты связаны со столбцами в X_train. Таким образом, мы собираемся создать фрейм данных из коэффициентов, чтобы сделать их более читабельными и простыми для интерпретации. Код на Python может выглядеть следующим образом.

coeff_df = pd.DataFrame(lm.coef_,X.columns,columns=['Coefficient'])
coeff_df

Это создаст фрейм данных, в котором будут ваши связанные строки, а затем соответствующий коэффициент рядом с ними. Отсюда мы переходим к тому, как интерпретировать эти коэффициенты.

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

Теперь, когда мы получили некоторое представление о наших коэффициентах, мы можем перейти к просмотру данных прогнозов из нашей модели.

Прогнозы модели

Чтобы проанализировать наши прогнозы из нашей модели, нам необходимо:

  • Сохраните наши прогнозы из наших тестовых данных в переменной
  • Используйте matplotlib, чтобы сделать точечный график
  • Используйте Seaborn, чтобы сделать distplot

Чтобы сохранить наши данные наших прогнозов в переменной, это будет одна простая строка кода и помощь пакета scikit-learn, и она будет выглядеть так:

predictions = lm.predict(X_test)

Теперь, когда у нас есть наши прогнозы в переменной, мы можем визуализировать это, чтобы качественно проанализировать нашу модель, взглянув на линейную модель и ее распределение.

Для этого мы будем использовать matplotlib для создания диаграммы рассеяния тестовых значений по сравнению с прогнозами, используя:

plt.scatter(y_test,predictions)

Ваш результат точечной диаграммы должен выглядеть примерно так

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

Другой способ, которым мы собираемся качественно проанализировать нашу модель, — это посмотреть на ее распределение. Для этого мы будем использовать пакет seaborn и использовать distplot, закодировав:

sns.distplot((y_test-predictions),bins=50);

После запуска это должно дать график, который выглядит примерно так:

Мы хотим, чтобы остатки этого графика были равномерно распределены по кривой нормального распределения, как мы говорили в Части II, чтобы убедиться, что мы правильно подогнали нашу модель.

Теперь, когда мы качественно проанализировали нашу модель, мы можем сделать еще один шаг и провести количественный анализ с использованием показателей оценки регрессии.

Метрики оценки регрессии

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

Вот 3 наиболее распространенных показателя оценки регрессии, и лучший способ сравнить эти показатели:

  • MAE является базовым, потому что это всего лишь средняя ошибка
  • MSE, как правило, лучше, чем MAE, потому что он наказывает за более крупные ошибки, которые встречаются чаще.
  • RMSE — самый популярный из трех, потому что он более удобочитаем с точки зрения единиц «у».

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

Этот код будет выглядеть так:

from sklearn import metrics
print('MAE:', metrics.mean_absolute_error(y_test, predictions))
print('MSE:', metrics.mean_squared_error(y_test, predictions))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, predictions)))

Это должно дать вам все три метрики оценки регрессии, перечисленные с их ошибками. Помните, что мы хотим МЕНЬШЕ ошибок в наших моделях, поэтому наименьшее число из трех будет лучшей моделью.

Теперь мы, наконец, научились анализировать нашу модель линейной регрессии как качественно, так и количественно. Это последний шаг, и мы завершили серию «Введение в машинное обучение»!

Конец мысли

На этом моя серия из 3-х частей завершается, и я надеюсь, что вам, ребята, понравилась одна из этих статей или, по крайней мере, вы нашли что-то полезное для себя. Я ни в коем случае не являюсь экспертом в этом вопросе и пишу, чтобы, возможно, помочь таким людям, как я, которые, возможно, начинают свое путешествие и ищут несколько советов, которые помогут им в этом. Я знаю, что мне очень нравится, когда я нахожу хорошие статьи, которые ускоряют мой процесс обучения, поэтому я думаю, что, возможно, некоторые из этих статей могут помочь кому-то, кто читает это. Спасибо, что нашли время, чтобы прочитать, и если вы не прочитали мои прошлые статьи, я свяжу их ниже, если кто-то захочет прочитать. Если вам нравится это, оставьте лайк или комментарий, рассказывая мне о том, что я мог бы сделать лучше, и о некоторых вещах, о которых вы хотели бы, чтобы я написал в следующий раз. Еще раз спасибо и хорошего взгляда на то, где вы находитесь в своем путешествии.

Введение в машинное обучение в Python: часть I

Введение в машинное обучение в Python: часть II