Обучение с учителем (supervised learning)

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

Основы обучения с учителем

При обучении с учителем у нас есть набор данных, состоящий из входных объектов (X) и соответствующих им правильных ответов (y). Модель обучается на этих данных, чтобы научиться предсказывать y на основе X. После обучения модель проверяется на новых данных, чтобы оценить её точность.

Популярные алгоритмы обучения с учителем

  1. Линейная регрессия
  2. Логистическая регрессия
  3. K-ближайших соседей (KNN)
  4. Деревья решений
  5. Случайный лес
  6. Метод опорных векторов (SVM)
  7. Нейронные сети

Пример 1: Линейная регрессия

Линейная регрессия используется для предсказания непрерывных значений. Вот пример, показывающий, как реализовать линейную регрессию с использованием библиотеки scikit-learn.

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# Генерация синтетических данных
X = np.random.rand(100, 1) * 10
y = 2.5 * X + np.random.randn(100, 1) * 2

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создание и обучение модели линейной регрессии
model = LinearRegression()
model.fit(X_train, y_train)

# Предсказание на тестовых данных
y_pred = model.predict(X_test)

# Визуализация результатов
plt.scatter(X_test, y_test, color='blue', label='Истинные значения')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Предсказания')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Пример 2: Логистическая регрессия

Логистическая регрессия используется для классификации. Рассмотрим пример бинарной классификации с использованием scikit-learn.

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# Генерация синтетических данных
X = np.random.rand(100, 2) * 10
y = (X[:, 0] + X[:, 1] > 10).astype(int)

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создание и обучение модели логистической регрессии
model = LogisticRegression()
model.fit(X_train, y_train)

# Предсказание на тестовых данных
y_pred = model.predict(X_test)

# Оценка качества модели
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))

Пример 3: K-ближайших соседей (KNN)

K-ближайших соседей — это простой алгоритм классификации и регрессии, который использует информацию о ближайших соседях для предсказания.

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report

# Генерация синтетических данных
X = np.random.rand(100, 2) * 10
y = (X[:, 0] + X[:, 1] > 10).astype(int)

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создание и обучение модели KNN
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

# Предсказание на тестовых данных
y_pred = model.predict(X_test)

# Оценка качества модели
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))

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