Введение:

Добро пожаловать в этот пост, где я познакомлю вас с примером проекта Python для кластеризации машинного обучения с использованием универсальной и популярной библиотеки Scikit-learn. Кластеризация — это метод обучения без учителя, который позволяет нам выявлять скрытые закономерности в наших данных, группируя похожие точки данных вместе. Scikit-learn предлагает различные алгоритмы кластеризации, такие как K-Means, DBSCAN и агломеративная кластеризация, и это лишь некоторые из них.

В этом пошаговом руководстве мы покажем, как реализовать алгоритм кластеризации K-средних на образце набора данных. Мы начнем с импорта необходимых библиотек, загрузки нашего набора данных и предварительной обработки данных. Далее мы применим алгоритм K-средних, визуализируем результаты и, наконец, оценим производительность нашей модели.

Давайте погрузимся!

  • Импортировать необходимые библиотеки

Для начала мы импортируем библиотеки, необходимые для нашего проекта.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score


  • Загрузите набор данных

Для этой демонстрации мы будем использовать набор данных «Iris», классический набор данных для задач кластеризации. Набор данных содержит 150 образцов цветков ириса с четырьмя характеристиками: длина чашелистика, ширина чашелистика, длина лепестка и ширина лепестка.

from sklearn.datasets import load_iris

data = load_iris()
X = data.data
y = data.target

  • Предварительно обработайте данные

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

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

  • Примените алгоритм кластеризации K-средних

Теперь, когда наши данные предварительно обработаны, мы применим алгоритм K-Means. Чтобы определить оптимальное количество кластеров, мы будем использовать «метод локтя», который включает построение графика суммы квадратов внутри кластера (WCSS) в зависимости от количества кластеров.

wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
    kmeans.fit(X_scaled)
    wcss.append(kmeans.inertia_)

plt.plot(range(1, 11), wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()

Из графика метода локтя видно, что оптимальное количество кластеров равно 3.

  • Соответствуйте модели K-средних

Теперь мы подгоним модель K-средних, используя оптимальное количество кластеров.

kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=0)
y_kmeans = kmeans.fit_predict(X_scaled)

  • Визуализируйте кластеры

Давайте визуализируем результаты, используя точечную диаграмму.

plt.scatter(X_scaled[y_kmeans == 0, 0], X_scaled[y_kmeans == 0, 1], s=100, c='red', label='Cluster 1')
plt.scatter(X_scaled[y_kmeans == 1, 0], X_scaled[y_kmeans == 1, 1], s=100, c='blue', label='Cluster 2')
plt.scatter(X_scaled[y_kmeans == 2, 0], X