我有一组丰富度作为分子列表的时间函数。首先,我开始使用99个时间步长和20个分子的小样本,但我希望稍后进一步扩展到几百个分子。
因为随着时间的推移,丰度可能非常不规律,我想使用Principal Component Analysis
减少数据,然后进行kmeans
分析,以便根据行为将分子分组成簇。时间的功能。
我发现this example似乎正在执行我想要使用sklearn
库的操作,但由于我收到错误data
,因此无法将其设置为ValueError: Incorrect number of features. Got 2 features, expected 10
{1}}。
如果我更改n_components=2
和n_clusters=2
,代码会运行并生成以下内容;
然而,这不会绘制数据,只是不同的聚类区域和聚类的质心,我不知道为什么会这样。
基本上我有两个问题:
我只能使用n_components=2
和n_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()