sklearn - 标记PCA的数据点

3

我正在使用scikitlearn、numpy和matplotlib生成一个PCA。我想知道如何为每个点(即我的数据中的每一行)标注。我在matplotlib中找到了“annotate”,但这似乎是为了标记特定坐标或根据它们出现顺序在任意点上放置文本。由于在matplot之前出现了PCA部分,我试图将其抽象化,但遇到了困难。是否有一种方法可以在使用sklearn生成图时实现此功能,以便不会失去与我所得到的行之间的连接? 以下是我的代码:

# Create a Randomized PCA model that takes two components
randomized_pca = decomposition.RandomizedPCA(n_components=2) 

# Fit and transform the data to the model
reduced_data_rpca = randomized_pca.fit_transform(x)

# Create a regular PCA model 
pca = decomposition.PCA(n_components=2)

# Fit and transform the data to the model
reduced_data_pca = pca.fit_transform(x)

# Inspect the shape
reduced_data_pca.shape

# Print out the data
print(reduced_data_rpca)
print(reduced_data_pca)
def rand_jitter(arr):
    stdev = .01*(max(arr)-min(arr))
    return arr + np.random.randn(len(arr)) * stdev
colors = ['red', 'blue']
for i in range(len(colors)):
    w = reduced_data_pca[:, 0][y == i]
    z = reduced_data_pca[:, 1][y == i]
    plt.scatter(w, z, c=colors[i])
targ_names = ["Negative", "Positive"]
plt.legend(targ_names, bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title("PCA Scatter Plot")
plt.show()
1个回答

1
PCA是一种投影方法,而不是聚类(您标记它为聚类)。
在PCA中没有标签的概念。
您可以在散点图上绘制文本,但通常会变得过于拥挤。您可以在stackoverflow上找到有关此问题的答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接