尝试执行PCA,在PCA空间中绘图

时间:2018-02-09 17:38:57

标签: python matplotlib scikit-learn pca

我有一个我读过的数据集,并将其标准化为normX。我使用以下块来设置PCA:

pca = PCA(n_components=None)

pca.fit_transform(normX)

pca.copy = True
pca.whiten = False
pca.iterated_power = 'auto'
pca.svd_solver = 'auto'
pca.random_state = None

# Calculate loading matrix
loadM = pca.components_.T * np.sqrt(pca.explained_variance_)

# Extracting loading vectors
loadV1 = loadM[:,0]
loadV2 = loadM[:,1]
loadV3 = loadM[:,2]

我现在尝试将原始数据转换为主要组件空间,然后在loadV1-loadV2loadV1-loadV3loadV2-loadV3空间中绘制转换后的数据,以便我可以讨论剧情。我的第一步loadV1-loadV2的代码如下所示,但它只会导致单个地块上的混乱数据:

xvec= pca.components_[0]
yvec = pca.components_[1]

loadV1-loadV2 = np.dot(loadV1,loadV2)

xs = pca.transform(normX)[:,0]
ys = pca.transform(normX)[:,1]

for i in range(len(xvec)):
    plt.arrow(0, 0, xvec[i]*max(xs), yvec[i]*max(ys), color='r', width=0.0005, head_width=0.0025)
    plt.text(xvec[i]*max(xs)*1.2, yvec[i]*max(ys)*1.2, loadV1-loadV2, color='r')

for i in range(len(xs)):
    plt.plot(xs[i], ys[i], 'bo')
    plt.text(xs[i]*1.2, ys[i]*1.2, loadV1-loadV2, color='b')

plt.show()

这导致一个图表中有大量数据混杂在一起并最终将多个矢量(红线)绘制为点。我不确定我在这里做错了什么。有什么想法吗?

0 个答案:

没有答案