
Введение:
Добро пожаловать в этот пост, где я познакомлю вас с примером проекта 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