Кластеризация (Clustering) - Лена Капаца
Кластеризация (Clustering) by Лена Капаца Dec. 10, 2022 Основы

Кластеризация — это задача разделения совокупности или точек данных на несколько групп таким образом, чтобы точки данных в одних и тех же группах были более похожи на другие точки данных в той же группе и отличались от точек данных в других группах. Это в основном совокупность объектов на основе сходства и несходства между ними.

Кластеризация: scikit-learn

Давайте посмотрим, как кросс-валидация реализована в 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()

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Подари чашку кофе дата-сайентисту ↑

© Лена Капаца. Все права защищены.