Обучение с учителем (supervised learning)
Обучение с учителем (supervised learning) — это подход в машинном обучении, при котором модель обучается на размеченных данных. Цель состоит в том, чтобы научить модель делать точные предсказания на новых, невиданных данных.
В этой статье я расскажу о принципах обучения с учителем, популярных алгоритмах и предоставлю примеры кода на Python.
Основы обучения с учителем
При обучении с учителем у нас есть набор данных, состоящий из входных объектов (X) и соответствующих им правильных ответов (y). Модель обучается на этих данных, чтобы научиться предсказывать y на основе X. После обучения модель проверяется на новых данных, чтобы оценить её точность.
Популярные алгоритмы обучения с учителем
- Линейная регрессия
- Логистическая регрессия
- K-ближайших соседей (KNN)
- Деревья решений
- Случайный лес
- Метод опорных векторов (SVM)
- Нейронные сети
Пример 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. Эти примеры дадут вам хорошее понимание основных принципов и помогут начать работу с обучением с учителем в ваших проектах.