KMeans
介绍
KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001,
precompute_distances='auto', verbose=0, random_state=None,
copy_x=True, n_jobs=None, algorithm='auto')
参数|说明 –|– n-cluster|分类簇的数量 max_iter|最大的迭代次数 n_init|算法的运行次数 init|接收待定的string。kmeans++表示该初始化策略选择的初始均值向量之间都距离比较远,它的效果较好;random表示从数据中随机选择K个样本最为初始均值向量;或者提供一个数组,数组的形状为(n_cluster,n_features),该数组作为初始均值向量。 precompute_distance|接收Boolean或者auto。表示是否提前计算好样本之间的距离,auto表示如果nsamples*n>12 million,则不提前计算。 tol|接收float,表示算法收敛的阈值。 N_jobs|表示任务使用CPU数量 random_state|表示随机数生成器的种子。 verbose|0表示不输出日志信息;1表示每隔一段时间打印一次日志信息。如果大于1,打印次数频繁。
使用
kmeans_model = KMeans(n_clusters=6, random_state=1).fit(X)
评估聚合效果
方法 | 真实值 | 最佳值 | sklearn函数 |
---|---|---|---|
ARI(兰德系数) | 需要 | 1.0 | adjusted_rand_score |
AMI(互信息) | 需要 | 1.0 | adjusted_mutual_info_score |
V-measure | 需要 | 1.0 | completeness_score |
FMI | 需要 | 1.0 | fowlkes_mallows_score |
轮廓系数 | 不需要 | 畸变程度大 | silhouette_score |
Calinski_ Harabaz | 不需要 | 最大值 | calinski_harabaz_score |
轮廓系数
labels = kmeans_model.labels_
metrics.silhouette_score(new_arr, labels, metric='euclidean')
聚类结果可视化
TSNE是一个数据可视化的工具,可以将高维数据降到2-3维
import pandas as pd
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
tsne=TSNE(n_components=2,init='random',random_state=177).fit(iris_data)
df=pd.DataFrame(tsne.embedding_)
df['labels']=kmeans.labels_
df1=df[df['labels']==0]
df2=df[df['labels']==1]
df3=df[df['labels']==2]
fig=plt.figure(figsize=(9,6))
plt.plot(df1[0],df1[1],'bo',df2[0],df2[1],'r*',df3[0],df3[1],'gD')
plt.show()