Введение в машинное обучение в Python: часть III
Оглавление
- Оценка модели
- Прогнозы модели
- Метрики оценки регрессии
- Конец мысли
Это последняя часть в моей серии из трех статей Введение в машинное обучение с помощью 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-х частей завершается, и я надеюсь, что вам, ребята, понравилась одна из этих статей или, по крайней мере, вы нашли что-то полезное для себя. Я ни в коем случае не являюсь экспертом в этом вопросе и пишу, чтобы, возможно, помочь таким людям, как я, которые, возможно, начинают свое путешествие и ищут несколько советов, которые помогут им в этом. Я знаю, что мне очень нравится, когда я нахожу хорошие статьи, которые ускоряют мой процесс обучения, поэтому я думаю, что, возможно, некоторые из этих статей могут помочь кому-то, кто читает это. Спасибо, что нашли время, чтобы прочитать, и если вы не прочитали мои прошлые статьи, я свяжу их ниже, если кто-то захочет прочитать. Если вам нравится это, оставьте лайк или комментарий, рассказывая мне о том, что я мог бы сделать лучше, и о некоторых вещах, о которых вы хотели бы, чтобы я написал в следующий раз. Еще раз спасибо и хорошего взгляда на то, где вы находитесь в своем путешествии.