据类方法之:KMeans聚类分析

发布时间 2023-10-19 21:20:05作者: 天使不设防

书接上回,在上一篇博客中完成了数据的降维分析,这里在降维后的基础上继续进行聚类分析,使用前2个PC进行KMeans据类并可视化。

from sklearn.cluster import KMeans
from collections import Counter

# 语言定义颜色和画布
colors = ['b', 'g', 'r', 'y', 'k', 'c', 'm', 'chartreuse']
plt.figure(figsize=(10,6))

# 这里k取2到6分别看聚类效果
for i in range(2,7):
	# 实例化对象
    kmeans = KMeans(n_clusters=i,random_state=0,n_init=10)
	# 聚类
    clus = kmeans.fit(pca_data)
	# 数据各个类别的数量
    print(i,Counter(clus.labels_))
    
	# 对应颜色和类别
    color = [colors[i] for i in clus.labels_]
    plt.subplot(2,3,i-1)
    plt.scatter(pca_data['pca1'],pca_data['pca2'],color=color)
    plt.title('{} clusters'.format(str(i)))
    plt.grid()

类别结果即各个K值下的聚类图:

2 Counter({0: 395, 1: 45})
3 Counter({1: 393, 0: 44, 2: 3})
4 Counter({0: 325, 3: 101, 1: 11, 2: 3})
5 Counter({2: 267, 0: 94, 3: 65, 1: 11, 4: 3})
6 Counter({4: 238, 0: 105, 1: 61, 5: 28, 2: 5, 3: 3})

image