没有为kmeans scikit-learn指定时,x,y轴值是什么

时间:2017-01-25 10:17:29

标签: python scikit-learn k-means

此代码:从scikit-learn包运行k-means算法:

from sklearn.cluster import KMeans
import numpy as np
from matplotlib import pyplot

X = np.array([[10, 2 , 9], [1, 4 , 3], [1, 0 , 3],
               [4, 2 , 1], [4, 4 , 7], [4, 0 , 5], [4, 6 , 3],[4, 1 , 7],[5, 2 , 3],[6, 3 , 3],[7, 4 , 13]])
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

k = 3
kmeans.fit(X)

labels = kmeans.labels_
centroids = kmeans.cluster_centers_

for i in range(k):
    # select only data observations with cluster label == i
    ds = X[np.where(labels==i)]
    # plot the data observations
    pyplot.plot(ds[:,0],ds[:,1],'o')
    # plot the centroids
    lines = pyplot.plot(centroids[i,0],centroids[i,1],'kx')
    # make the centroid x's bigger
    pyplot.setp(lines,ms=15.0)
    pyplot.setp(lines,mew=2.0)
pyplot.show()

生成:

enter image description here

由于我没有设置x和y轴标签这些轴值代表什么?

scikit-learn利用欧几里德距离度量来计算每个点之间的距离,那么轴值是否代表欧氏距离?

文档http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html没有描述这种情况。

更新:它似乎只是使用

绘制数组中的前两个二维
X = np.array([[10, 2 , 90], [1, 4 , 35], [1, 0 , 30],
               [4, 2 , 1], [4, 4 , 7], [4, 0 , 5], [4, 6 , 3],[4, 1 , 7],[5, 2 , 3],[6, 3 , 3],[7, 4 , 13]])

我已将前3个参数的3维尺寸更新为:90,35& 40。这对结果情节没有任何影响。因此,为了可视化尺寸> 2我应该对数据进行PCA分析。

1 个答案:

答案 0 :(得分:0)

<强> TL; DR

我认为它只是在“x”上绘制第一个变量,在“y”上绘制第二个变量。

(但“x”和“y”是错误的术语。)

<强>详细

在机器学习中,术语x和y通常使用略有不同。在您的情况下,您的X矩阵包含具有3个值的数据点:

  • 前两个值通常称为x1和x2变量(x带有1个下标,如果我可以这样格式化的话)。
  • 第三个值是......我还不确定。我没有在情节中看到它。

如果你在X中查看原始数据,你会看到[10,2,9],[1,4,3] ......

第一个数据点的前两个变量是(10,2)。

  • 您可以看到在水平10,垂直2处绘制的点。
  • 在水平1,垂直4处绘制了第二个点。
  • 依旧......

因此你可以基本看到横轴是x1,垂直是x2。

我不知道第三个值是如何出现在情节上的。它可能是颜色,但通常用k-means,颜色用于将不同的值分成簇。所以每种颜色都是一个簇。

所以我真的没看到第三个值在哪里。但这不是你的问题! :)

你可能想要pyplot的文档,而不是scikit-learn。这是pyplot:http://matplotlib.org/api/pyplot_api.html