CyberStar
7654 subscribers

Общий алгоритм машинного обучения с помощью библиотеки scikit-learn

Продолжаю изучать Machine Learning и в процессе прохождения урока по регрессии мне пришла идея сформировать алгоритм для создания регрессионных моделей, чтобы упростить работу. Далее я приступлю к изучению классификации, но у меня есть гипотеза, что этот алгоритм вполне будет применим и к задачам классификации. Обучение моделей выполняется с применением библиотеки scikit-learn. Итак, начнем.

Источник: Яндекс картинки
Источник: Яндекс картинки

1. Загрузка данных

Самый популярный способ загрузки и чтения датасетов - использование библиотеки pandas

import pandas as pd

data = pd.read_csv('filename.csv')

2. Исследование данных

2.1 Во-первых, нужно выявить пропущенные значения и решить, как с ними работать. Сумму пропущенных значений можно отобразить в виде числовых данных, можно посмотреть на графике, тут как удобно. Главное - от них нужно избавляться.

2.2 Во-вторых, нужно избавиться от ошибок в данных. Например, если в колонке "Цена квартиры" находится размер площади квартиры, то это явно непорядок

2.3 Определение features и labels. Другими словами нужно определить целевую переменную (Y), которую будем прогнозировать и признаки, которые оказывают влияние на целевую переменную.

2.4 Визуализация распределений. Этот этап полезен для определения типа распределения числовых данных и определения выбросов. Тут будут полезны методы hist и boxplot из библиотеки matplotlib

2.5 Просмотр статистических характеристик числовых столбцов с помощью метода describe библиотеки pandas

2.6 Feature engineering. Что-то, возможно придется отбросить, скомбинировать, разделить, добавить.

2.7 Препроцессинг (нормализация числовых значений и энкодинг категориальных значений)

3. Расчет и визуализация корреляции для числовых значений

4. Разделение features и labels на X и y

5. Формирование на обучающей и тестовой выборок. Это можно сделать с помощью:

from sklearn.model_selection import train_test_split

6. Обучение модели и прогноз

Тут мы выбираем алгоритм и, собственно, обучаем модель

from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor

model = GradientBoostingRegressor().fit(X_train, y_train)
predictions = model.predict(X_test)

7. Расчет метрик точности модели.

from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, predictions)
print("MSE:", mse)

rmse = np.sqrt(mse)
print("RMSE:", rmse)

r2 = r2_score(y_test, predictions)
print("R2:", r2)

8. Эксперименты с разными алгоритмами машинного обучение и выбор тех, у которых будут наилучшие метрики

9. Сохранение модели

import joblib

filename = './models/name.pkl'
joblib.dump(model, filename)

10. Загрузка модели и применение на актуальных данных

loaded_model = joblib.load(filename)
X_new = np.array([[1, 2, 3, 4, 5, 6, 7]]).astype('float64')
result = loaded_model.predict(X_new)

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