python机器学习算法

kmeans最优k值的确定方法-手肘法和轮廓系数法

2018-08-16  本文已影响0人  小歪与大白兔

手肘法

- 核心指标:SSE(sum of the squared errors,误差平方和)
image.png
-手肘法核心思想
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
 
df_features = pd.read_csv(r'C:\预处理后数据.csv',encoding='gbk') # 读入数据
'利用SSE选择k'
SSE = []  # 存放每次结果的误差平方和
for k in range(1,9):
    estimator = KMeans(n_clusters=k)  # 构造聚类器
    estimator.fit(df_features[['R','F','M']])
    SSE.append(estimator.inertia_) # estimator.inertia_获取聚类准则的总和
X = range(1,9)
plt.xlabel('k')
plt.ylabel('SSE')
plt.plot(X,SSE,'o-')
plt.show()
image.png

显然,肘部对于的k值为4(曲率最高),故对于这个数据集的聚类而言,最佳聚类数应该选4。

轮廓系数

使用轮廓系数(silhouette coefficient)来确定,选择使系数较大所对应的k值
方法:

上一篇 下一篇

猜你喜欢

热点阅读