未为 kmeans scikit-learn 指定时的 x 和 y 轴值是多少
What are x , y axis values when not specified for kmeans scikit-learn
此代码:运行来自 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()
生成:
因为我没有设置 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 分析。
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
此代码:运行来自 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()
生成:
因为我没有设置 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 分析。
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