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

Машинное обучение состоит из 5 шагов:

  1. Импорт библиотек
  2. Импорт базы данных
  3. Подготовка данных для машинного обучения
  4. Обучение модели
  5. Оценка модели

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

Импорт библиотек

import numpy as np
import pandas as pd
from sklearn import linear_model
  • Numpy для работы с многомерными массивами.
  • Pandas для упорядочивания и фильтрации информации, аналогичной Excel.
  • SciKit-Learn используется для машинного обучения. В этом случае мы импортируем метод linear_model, который подгоняет линию к точкам, как мы учили в школе. Потому что руководство является базовым, и я хочу начать с чего-то простого и хорошего.

Импорт базы данных

База данных в путеводителе содержит цены на дома, продаваемые в штате Сакраменто в США, а также факторы, которые могут повлиять на цену, такие как площадь дома и количество комнат. Вы можете скачать его отсюда.

df = pd.read_csv("../data/sacramentorealestatetransactions.csv",usecols=["sq__ft", "price"])

Метод read_csv библиотеки pandas считывает данные файла в формате CSV и заполняет переменную df ( фрейм данных).

В базе всего 2 колонки, цена и площадь. Проверим базу данных:

Есть ли недостающие данные?

df.isnull().sum().sum()
0
  • No

Какова статистика? Пример: среднее значение, стандартное отклонение и медиана?

Подготовка данных для машинного обучения

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

Очистим базу от необычных примеров:

# Remove the outliers
filtered_data = df[(df.sq__ft > 10) & (df.sq__ft < 5000)]

Нам нужно найти цену, представленную в столбце price, исходя из площади домов, представленных в столбце sq__ft . Цена — это зависимая переменная y, основанная на других независимых переменных, представленных заглавной буквой X.

# Define the independent variable (X) vs. the dependent (y)
X = df[["sq__ft"]].values
y = df["price"].values

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

# Split the data to test and train groups
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
  • Метод смешивает образцы и разбивает их на две группы, где исследовательская группа содержит 67% образцов базы данных, а остальные образцы относятся к тестовой группе.

Обучение модели

Работа с методами SciKit-Learn может быть очень простой. Все, что нужно, это создать объект из метода и запустить метод fit() объекта на наборе обучающих примеров:

# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(X_train, y_train)

Этот! Наша модель научилась. Насколько он успешен?

Оценка производительности модели

Мы оценим производительность модели в тестовой группе с помощью метода predit():

# Make predictions using the testing set
y_pred = regr.predict(X_test)
  • Переменная y_pred содержит прогнозы модели о ценах в тестовой группе.

Поскольку это регрессионная модель, мы будем оценивать ее эффективность с помощью индекса объясненной дисперсии R 2 :

print("R-squared for testing dataset: %.2f" % r2_score(y_test, y_pred))
0.45
  • Это означает, что наша очень простая модель может объяснить 45% стоимости квартиры.

Теперь, когда у нас достаточно опыта, чтобы понять, насколько просто использовать модели SciKit-Learn, мы узнаем, какие модели использовать для регрессии и классификации.

10 популярных моделей SciKit-Learn, используемых для регрессии

1. Регрессор XGBoost

from xgboost.sklearn import XGBRegressor

2. Регрессор CatBoost

from catboost import CatBoostRegressor
  • Такая хорошая модель, как XGBoost, удобна для работы с категориальными данными.

3. Линейная регрессия

from sklearn.linear_model import LinearRegression

Линейная регрессия. Похоже на то, что мы видели в руководстве.

4. Кернел Ридж

from sklearn.kernel_ridge import KernelRidge

5. Машина опорных векторов

from sklearn.svm import SVR

6. Случайный лесной регрессор

from sklearn.ensemble import RandomForestRegressor

7. Регрессор повышения градиента

from sklearn.ensemble import GradientBoostingRegressor

8. Байесовский хребет

from sklearn.linear_model import BayesianRidge

9. Стохастическая регрессия градиентного спуска

from sklearn.linear_model import SGDRegressor

10. Эластичная сетка

from sklearn.linear_model import ElasticNet

10 популярных моделей SciKit-Learn, используемых для классификации

1. Регрессор XGBoost

rom xgboost.sklearn import XGBClassifier
  • Пожалуй, лучшая модель машинного обучения на табличных данных. Относительно продвинутая модель, пример ее применения в качестве классифицированной модели вы можете увидеть в руководстве по модели машинного обучения — XGBoost — см. деревья в лесу.

2. Машина опорных векторов (SVM)

from sklearn.svm import SVC
  • Модель создает виртуальную плоскость, разделяющую группы.

3. K-ближайший сосед (KNN)

from sklearn.neighbors import KNeighborsClassifier
  • Находит лучший способ разделить модель на K групп.

4. Случайный лес

from sklearn.ensemble import RandomForestClassifier
  • Группировка деревьев решений в лес для получения более сильного результата, чем каждое отдельное дерево.

5. Наивный Байес

from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB

6. Логистическая регрессия

from sklearn.linear_model import LogisticRegression
  • Возможно, это удивительно, но функцию можно использовать и для классификации. Не только для регресса.

7. Линейный дискриминантный анализ (LDA)

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

8. Классификатор повышения градиента

from sklearn.ensemble import GradientBoostingClassifier

9. Адабустклассификатор

from sklearn.ensemble import AdaBoostClassifier

10. Гауссовский классификатор

from sklearn.gaussian_process import GaussianProcessClassifier