尝试执行PCA,在PCA sp中打印

2024-07-05 15:04:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我已经读入并规范化的数据集叫做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()

这将导致一个包含大量数据的绘图混乱在一起,并最终将多个向量(红线)绘制为点。我不知道我做错了什么。有什么想法吗?你知道吗


Tags: 数据绘图componentstransformpltmaxxspca