Bootstrap

使用scikit-learn中的K均值包进行聚类分析

聚类是无监督学习中的一种重要技术,用于在没有标签信息的情况下对数据进行分析和组织。K均值算法是聚类中最常用的方法之一,其目标是将数据点划分为K个簇,使得每个簇内的数据点更加相似,而不同簇之间的数据点差异较大。

准备自定义数据集

首先,需要一个自定义数据集来进行聚类分析。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 创建自定义数据集
np.random.seed(42)
num_samples = 150

# 生成特征数据
X = np.random.rand(num_samples, 2)

# 将数据转换为DataFrame以便查看
data = pd.DataFrame(X, columns=['Feature1', 'Feature2'])

# 可视化数据集
plt.scatter(data['Feature1'], data['Feature2'], c='gray', marker='o', edgecolor='black')
plt.title('Custom Dataset')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

在这个数据集中,Feature1Feature2是特征。使用K均值算法对这些数据点进行聚类。

 使用K均值算法进行聚类

接下来,将使用scikit-learn库中的K均值算法对数据集进行聚类。我们需要指定簇的数量K,假设K=3。

from sklearn.cluster import KMeans

# 指定簇的数量
k = 3

# 初始化K均值聚类器
kmeans = KMeans(n_clusters=k, random_state=42)

# 训练模型
kmeans.fit(X)

# 获取聚类结果
labels = kmeans.labels_

# 获取簇中心
centroids = kmeans.cluster_centers_

# 将聚类结果添加到DataFrame中
data['Cluster'] = labels

print(data.head())

可视化聚类结果

可视化聚类结果,以便更直观地了解数据点的分组情况。

# 可视化聚类结果
plt.figure(figsize=(8, 6))
plt.scatter(data['Feature1'], data['Feature2'], c=data['Cluster'], cmap='viridis', marker='o', edgecolor='black')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='x', s=200, label='Centroids')
plt.title('K-Means Clustering Result')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.show()
通过观察聚类结果的可视化图,我们可以看到数据点被划分为三个簇。每个簇内的数据点更加相似,而不同簇之间的数据点差异较大。K均值算法通过迭代优化簇中心的位置来实现这一目标。
;