下面是一个使用k-means聚类分析的示例,将数据集聚为2类,通过二轮迭代求质心和类别结果。假设数据集是一个名为"data.csv"的CSV文件,包含两列特征:"Feature1"和"Feature2"。
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 使用k-means聚类,聚类数为2
kmeans = KMeans(n_clusters=2, random_state=0).fit(df)
# 获取质心
centroids = kmeans.cluster_centers_
print("质心:", centroids)
# 获取每个样本的类别
labels = kmeans.labels_
df['Cluster'] = labels
# 可视化
plt.scatter(df['Feature1'], df['Feature2'], c=labels, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='x', s=100)
plt.show()
在这个示例中,首先导入了所需的库(pandas、sklearn和matplotlib),然后读取CSV文件到DataFrame中。接着,使用sklearn的KMeans方法进行聚类分析,设置聚类数为2。在拟合模型后,我们得到了质心和每个样本的类别。最后,将结果可视化,其中不同颜色代表不同的类别,红色的叉号表示质心。