Кластеризация — это задача разделения совокупности или точек данных на несколько групп таким образом, чтобы точки данных в одних и тех же группах были более похожи на другие точки данных в той же группе и отличались от точек данных в других группах. Это в основном совокупность объектов на основе сходства и несходства между ними.
Давайте посмотрим, как кросс-валидация реализована в SkLearn. Для начала импортируем необходимые библиотеки:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import TSNE
Загрузим бостонский датасет цен на дома из встроенных наборов данных. sklearn:
boston_dataset = load_boston()
boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
boston.head()
Создадим датафреймы X – Предикторы (Predictor Variable) и y – Целевую переменную (Target Variable) из этих данных.
X = pd.DataFrame(boston)
Y = boston_dataset.target
Разобьем эти датафреймы на Тренировочные (Train Data) и Тестовые (Test Data) данные с помощью функции train_test_split()
так, чтобы размер тестовой выборки составлял 20% от всех данных:
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state=42)
Масштабируем, то есть выполним Стандартизацию (Standartization) данные с помощью StandardScaler
. Такое преобразование необходимо, поскольку признаки датасета могут иметь большие различия между своими диапазонами, и для моделей Машинного обучения, основанных на вычислении дистанции между точками на графике как основу прогнозирования: Метод k-ближайших соседей (kNN), Метод опорных векторов (SVM), Дерево решений (Decision Tree) и проч., это спровоцирует искаженное восприятие данных.
sc = StandardScaler()
X_train_scaled = pd.DataFrame(sc.fit_transform(X_train), columns=X_train.columns)
X_test_scaled = pd.DataFrame(sc.transform(X_test), columns=X_test.columns)
Инициируем объект – модель KMeans
и разобьем данные из тренировочного набора на три Кластера (Cluster), используя все признаки из датафрейма X_train
:
kmeans = KMeans(n_clusters=3, random_state=42, max_iter=100).fit(X_train)
Обучим модель и раскрасим получившиеся кластеры разными цветами:
labels_train = kmeans.fit_predict(X_train_scaled)
plt.scatter(X_train_tsne[:, 0], X_train_tsne[:, 1], c=labels_train)
plt.show()
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
© Лена Капаца. Все права защищены.