【发布时间】:2018-06-14 23:28:15
【问题描述】:
我正在使用以下 python 代码使用 kmeans 对我的数据点进行聚类。
data = np.array([[30, 17, 10, 32, 32], [18, 20, 6, 20, 15], [10, 8, 10, 20, 21], [3, 16, 20, 10, 17], [3, 15, 21, 17, 20]])
kmeans_clustering = KMeans( n_clusters = 3 )
idx = kmeans_clustering.fit_predict( data )
#use t-sne
X = TSNE(n_components=2).fit_transform( data )
fig = plt.figure(1)
plt.clf()
#plot graph
colors = np.array([x for x in 'bgrcmykbgrcmykbgrcmykbgrcmyk'])
plt.scatter(X[:,0], X[:,1], c=colors[kmeans_clustering.labels_])
plt.title('K-Means (t-SNE)')
plt.show()
但是,我得到的集群图是错误的,因为我将所有内容都集中在一个点上。
因此,请告诉我我的代码哪里出错了?我想在散点图中单独查看 kmeans 聚类。
编辑
我得到的t-sne vales如下。
[[ 1.12758575e-04 9.30458337e-05]
[ -1.82559784e-04 -1.06657936e-04]
[ -9.56485652e-05 -2.38951623e-04]
[ 5.56515580e-05 -4.42453191e-07]
[ -1.42039677e-04 -5.62548119e-05]]
【问题讨论】:
-
您查看过 t-SNE 变换后
X的值吗? -
我无法重现您的问题。根据给出的示例数据,我得到 5 分,x 和 y 值(大约)在 -200 和 200 之间。您使用的是什么 sklearn 和 numpy 版本?
-
@Evert 非常感谢您的 cmets。我的 numpy 版本是 1.13.0,sklearn 版本是 0.18.1。另外,我在问题中更新了我的 tsne 值。你能告诉我我在哪里弄错了代码吗?
-
无法使用 numpy 1.13.3 和 sklearn 0.19 进行复制
-
在 0.19 版中为
manifold.TSNE修复了很多错误。尝试升级您的sklearn版本。
标签: python matplotlib machine-learning k-means