在聚类分析过程中,想通过绘制手肘图寻找最优k值时,使用到了KMeans()函数,当n_clusters=1,会发生报错:
……
File "D:\Anaconda\lib\site-packages\threadpoolctl.py", line 646, in get_version
config = get_config().split()
AttributeError: 'NoneType' object has no attribute 'split'
代码片段:
from sklearn.cluster import KMeans
# 通过迭代确定k值
X1 = data[['Age', 'Spending Score (1-100)', 'Annual Income (k$)']].values # 转为数组形式
inertia = []
for n in range(1 , 11):
algorithm = (KMeans(n_clusters = n ,init='k-means++', n_init = 10 ,max_iter=300,
tol=0.0001, random_state= 111 , algorithm='elkan') )
algorithm.fit(X1)
inertia.append(algorithm.inertia_)
报错原因:
新版 KMeans算法的 n_cluster必须是大于 1 的,当n_cluster=1,即聚类结果为1,那么失去了聚类的意义。
解决方案:
循环时,跳过n_cluster=1的情况,直接从2开始。
如上面代码中把:
for n in range(1 , 11):
改成
for n in range(2 , 12):
即可。
参考文章:AttributeError: ‘NoneType‘ object has no attribute ‘split‘问题解决方法-pudn.com