Python 如何计算Sklearn中点到质心的平均距离?
我被要求计算每个点到其质心的平均距离。已经提供了数据集和集群数量,这似乎是一个非常直接的问题(考虑到k-means集群的作用),但我似乎找不到可行的解决方案 数据集是一个3列、500行、带浮点数的excel工作表 根据我所读到的,最简单的方法是将点到每个质心的距离放在一个numpy数组中,然后计算平均值。这就是我在下面所做的Python 如何计算Sklearn中点到质心的平均距离?,python,scikit-learn,cluster-analysis,k-means,unsupervised-learning,Python,Scikit Learn,Cluster Analysis,K Means,Unsupervised Learning,我被要求计算每个点到其质心的平均距离。已经提供了数据集和集群数量,这似乎是一个非常直接的问题(考虑到k-means集群的作用),但我似乎找不到可行的解决方案 数据集是一个3列、500行、带浮点数的excel工作表 根据我所读到的,最简单的方法是将点到每个质心的距离放在一个numpy数组中,然后计算平均值。这就是我在下面所做的 从sklearn.cluster导入KMeans 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 '执行(%matplotlib内联)' 将numpy
从sklearn.cluster导入KMeans
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
'执行(%matplotlib内联)'
将numpy作为np导入
df=pd.read\u excel('k-means\u test.xlsx',sheet\u name='data\u set')
X=np.数组(df)
plt.scatter(X[:,0],X[:,1],标签='真实位置')
kmeans=kmeans(n_集群=5)
kmeans.fit(X)
##打印(kmeans.群集\中心)
plt.scatter(X[:,0],X[:,1],c=kmeans.labels,cmap='rainbow')
##plt.show()
距离=kmeans.fit_变换(X)
方差=0
i=0
对于kmeans.labels中的标签:
方差=方差+距离[i][标签]
i=i+1
平均距离=np.平均(距离)
打印(平均距离)
我期望值在1.41到2.85之间,但我得到了11.3。很遥远
任何帮助都将不胜感激。一般来说,我对python和机器学习算法相当陌生。K-means使用平方欧几里德距离
人们常常错误地认为这意味着最小化欧几里德距离——事实并非如此
无论如何,试着插入
distance=numpy.sqrt(distance)
,之后你的平均值可能会低于3。看一看:谢谢@MaximilianPeters,我试图将一些代码合并到上面的示例中,但事情失控了(初学者和我都认为示例中的一些代码很复杂)-所以我采取了卑鄙的方法。我会再看一看,看看我是否能从中得到一些东西。嗨@Anony mouse,谢谢你的评论——从概念上说,这是非常有用的。不幸的是这导致了3.37-所以我一定是真的搞砸了。也许尝试使用欧几里德距离有问题?嗯,你在计算到所有三个中心的平均距离…嗯。。。我不确定这将如何影响到我的答案仍然需要在1.41和2.85之间,所有点到各自中心的平均距离。有5个集群,而不是3个。您是否建议上面的代码计算所有点到所有5个中心的平均距离?是的。到每个点的所有中心。检查距离的形状。