使用Python中的sklearn进行kmeans聚类

我使用以下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-sneX = TSNE(n_components=2).fit_transform( data )fig = plt.figure(1)plt.clf()#plot graphcolors = 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()

然而,我得到的聚类图显示所有点都集中在一个点上。cluster plot

因此,请告诉我我的代码哪里出错了?我希望在散点图中能看到kmeans聚类分开显示。

编辑

我得到的t-sne值如下。

[[  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]]

回答:

使用TSNEperplexity参数。默认的perplexity值为30,看来对于你的情况来说这个值太大了,尽管文档中提到TSNE对这个参数不太敏感。

perplexity与其他流形学习算法中使用的最近邻居数量有关。较大的数据集通常需要更大的perplexity。考虑选择5到50之间的值。这个选择并不是非常关键,因为t-SNE对这个参数不太敏感。

X = TSNE(n_components=2, perplexity=2.0).fit_transform( data )

enter image description here

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注