Далее применяется метод кластеризации KMeans, который пытается разделить образцы данных на заданное количество кластеров (в данном случае 2 кластера). Модель KMeans обучается на признаках образцов без учета меток классов, так как это задача обучения без учителя. Подробнее данный метод мы будем рассматривать позже.
После обучения модели для каждого образца вычисляется метка кластера, которой он принадлежит. Затем происходит визуализация полученных кластеров на плоскости, используя два из признаков: средний радиус (`mean radius`) и среднюю текстуру (`mean texture`). Каждый образец представлен точкой на графике, а его цвет обозначает принадлежность к одному из двух кластеров.
Этот анализ помогает выявить общие характеристики опухолей и потенциально помогает в их классификации или определении риска злокачественного развития.
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Загрузка набора данных
breast_cancer_data = load_breast_cancer()
# Преобразование данных в DataFrame
data = pd.DataFrame(data=breast_cancer_data.data, columns=breast_cancer_data.feature_names)
# Добавление меток классов в DataFrame
data['target'] = breast_cancer_data.target
# Создание объекта KMeans с 2 кластерами (для злокачественных и доброкачественных опухолей)
kmeans = KMeans(n_clusters=2)
# Обучение модели на данных без меток классов
kmeans.fit(data.drop('target', axis=1))
# Получение меток кластеров для каждого образца
cluster_labels = kmeans.labels_
# Визуализация кластеров
plt.scatter(data['mean radius'], data['mean texture'], c=cluster_labels, cmap='viridis')
plt.xlabel('Mean Radius')
plt.ylabel('Mean Texture')
plt.title('KMeans Clustering')
plt.show()
Пример 3
Давайте возьмем набор данных о покупках клиентов в магазине и применим к нему метод кластеризации K-means. В этом примере мы будем использовать набор данных "Mall Customer Segmentation Data", который содержит информацию о клиентах магазина и их покупках.
```python
# Импортируем необходимые библиотеки
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Загружаем данные
data = pd.read_csv('mall_customers.csv')
# Посмотрим на структуру данных
print(data.head())
# Определяем признаки для кластеризации (в данном случае возраст и расходы)
X = data[['Age', 'Spending Score (1-100)']].values
# Стандартизируем данные
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Определяем количество кластеров
k = 5
# Применяем метод кластеризации K-means
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X_scaled)
y_pred = kmeans.predict(X_scaled)
# Визуализируем результаты кластеризации
plt.figure(figsize=(8, 6))
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=y_pred, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', color='red', s=300, linewidth=5, label='Centroids')
plt.xlabel('Age')
plt.ylabel('Spending Score (1-100)')
plt.title('K-means clustering of Mall Customers')
plt.legend()
plt.show()
```
В этом коде мы загружаем данные о покупках клиентов, выбираем признаки для кластеризации (в данном случае возраст и расходы), стандартизируем данные, применяем метод кластеризации K-means и визуализируем результаты кластеризации. Каждый кластер обозначен разным цветом, а центроиды кластеров отмечены красными крестами.
В коде мы используем метод кластеризации K-means, который работает следующим образом:
1. Загрузка данных: Сначала мы загружаем данные о покупках клиентов из файла "mall_customers.csv".