Python:PCA + k-表示不起作用

时间:2015-11-11 18:29:26

标签: python scikit-learn k-means pca

我有一组丰富度作为分子列表的时间函数。首先,我开始使用99个时间步长和20个分子的小样本,但我希望稍后进一步扩展到几百个分子。

因为随着时间的推移,丰度可能非常不规律,我想使用Principal Component Analysis减少数据,然后进行kmeans分析,以便根据行为将分子分组成簇。时间的功能。

我发现this example似乎正在执行我想要使用sklearn库的操作,但由于我收到错误data,因此无法将其设置为ValueError: Incorrect number of features. Got 2 features, expected 10 {1}}。

如果我更改n_components=2n_clusters=2,代码会运行并生成以下内容;

Resulting plot without data

然而,这不会绘制数据,只是不同的聚类区域和聚类的质心,我不知道为什么会这样。

基本上我有两个问题:

  • 我只能使用n_components=2n_clusters=2运行代码,但我想在此处尝试不同的值以获得最佳匹配。

  • 结果图不包括数据,只包括聚类区域和质心。

以下是代码:

reduced_data = PCA(n_components=10).fit_transform(data)
kmeans = KMeans(init='k-means++', n_clusters=10, n_init=10)
kmeans.fit(reduced_data)

# Step size of the mesh. Decrease to increase the quality of the VQ.
h = .02     # point in the mesh [x_min, m_max]x[y_min, y_max].

# Plot the decision boundary. For that, we will assign a color to each
x_min, x_max = reduced_data[:, 0].min() - 1, reduced_data[:, 0].max() + 1
y_min, y_max = reduced_data[:, 1].min() - 1, reduced_data[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

# Obtain labels for each point in mesh. Use last trained model.
Z = kmeans.predict(np.c_[xx.ravel(), yy.ravel()])

# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.clf()
plt.imshow(Z, interpolation='nearest',
           extent=(xx.min(), xx.max(), yy.min(), yy.max()),
           cmap=plt.cm.Paired,
           aspect='auto', origin='lower')

centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1],marker='x', s=169, linewidths=3,color='w', zorder=10)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.xticks(())
plt.yticks(())
plt.savefig('PCAclustering_'+ run_label + time_label +'.pdf')
plt.close()

0 个答案:

没有答案