Для нас конец года и последний рабочий день в году — ещё не повод не делиться интересным и полезным
😎
Сегодня мы обсудим основные типы обучения в машинном обучении: обучение
с учителем, обучение
без учителя и обучение
с подкреплением. На примерах разберем их отличия и применения в реальных задачах. Давайте начнем!
1. Обучение с учителем
При обучении с учителем алгоритм обучается на размеченных данных, где каждая запись имеет соответствующий выходной результат. Задача алгоритма — научиться предсказывать этот результат на новых данных.
Пример: Регрессия
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Генерация данных
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([3, 4, 2, 5, 6])
# Обучение модели
model = LinearRegression()
model.fit(X, y)
# Предсказание
X_new = np.array([[6]])
y_pred = model.predict(X_new)
# Визуализация
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red') # Линия регрессии по всем данным
plt.scatter(X_new, y_pred, color='green', label='Предсказание для X=6') # Предсказанное значение
plt.title("Линейная регрессия")
plt.xlabel("X")
plt.ylabel("y")
plt.legend()
plt.show()
В результате выполнения этого кода вы получите график с точками исходных данных и линией регрессии, которая показывает зависимость между переменной X и предсказанными значениями y. Это позволяет визуально оценить качество модели линейной регрессии.
2. Обучение без учителя
Обучение без учителя используется на неразмеченных данных. Алгоритм пытается найти скрытые структуры или паттерны в данных без явных меток.
Пример: Кластеризация
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Генерация данных
X, y = make_blobs(n_samples=300, centers=4, random_state=42)
# Обучение модели
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
# Предсказание кластеров
y_kmeans = kmeans.predict(X)
# Визуализация
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title("Кластеризация K-средних")
plt.show()
В результате выполнения этого кода вы получите график с точками, представляющими сгенерированные данные, окрашенными в зависимости от их принадлежности к кластерам. Красные точки обозначают центры найденных кластеров. Это позволяет визуально оценить качество кластеризации и распределение данных по кластерам.
🔽