Пример 2
Задача, рассмотренная в данном коде, заключается в кластеризации данных об опухолях молочной железы на основе их характеристик, чтобы выделить группы схожих образцов тканей. Это может помочь в анализе и понимании характеристик опухолей, а также в дальнейшем принятии медицинских решений.
Набор данных содержит информацию о различных признаках опухолей, таких как радиус, текстура, периметр и другие. Для удобства эти данные загружаются из библиотеки `sklearn.datasets`. Каждый образец в наборе данных имеет также метку класса, указывающую, является ли опухоль злокачественной (1) или доброкачественной (0).
Далее применяется метод кластеризации 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')