一、基于K-Means获取最佳K值
score_list = []
max_score = -1
for k in range(2, 6): # 2,3,4,5
kmeans_model = KMeans(n_clusters=k) # 建模
kmeans_temp = kmeans_model.fit_predict(data_matrix) # 计算点距离
# print(kmeans_temp)
score = silhouette_score(data_matrix, kmeans_temp) # 得到每个K下的平均轮廓系数
# 获取最佳k值
if score > max_score: # 如果平均轮廓系数更高
max_score = score # 保存更高的系数值
best_k = k # 保存最佳的k值
labels_temp = kmeans_temp # 保存标签数据
# print(k, score)
score_list.append([k, score]) # 存每一次的k值和对应的平均轮廓系数
# print('{:*^60}'.format('所有的k值以及对应平均轮廓系数'))
print(score_list)
print('最佳K值:', best_k)
结果
[[2