Python 在PCA中使用2台以上的电脑

Python 在PCA中使用2台以上的电脑,python,pca,Python,Pca,我想从头开始使用PCA算法,但我想将784个特征减少到大约70个,而不是2个。我以前试过的是下面的代码。 在“选择具有最大特征值的k个特征向量”部分的代码中,如何选择k 将numpy导入为np 从sklearn.preprocessing导入StandardScaler 将matplotlib.pyplot作为plt导入 作为pd进口熊猫 数据列车=pd.read\U csv('trainData.csv',标题=None) 标签\u train=pd.read\u csv('trainLabe

我想从头开始使用PCA算法,但我想将784个特征减少到大约70个,而不是2个。我以前试过的是下面的代码。 在“选择具有最大特征值的k个特征向量”部分的代码中,如何选择k

将numpy导入为np
从sklearn.preprocessing导入StandardScaler
将matplotlib.pyplot作为plt导入
作为pd进口熊猫
数据列车=pd.read\U csv('trainData.csv',标题=None)
标签\u train=pd.read\u csv('trainLabels.csv',标题=None)
data\u train=StandardScaler().拟合变换(data\u train)
#或者我们可以为COV提供一行numpy:
cov\u mat=np.cov(数据列车T)
#使用numpy计算特征值和向量
eig\u VAL,eig\u vecs=np.linalg.eig(cov\u mat)
#列出(特征值,特征向量)元组
eig_对=[(范围(len(eig_vals))内i的np.abs(eig_vals[i]),eig_向量[:,i])]
#将(特征值、特征向量)元组从高到低排序
eig_pairs.sort(key=lambda x:x[0],reverse=True)
对于eig_对中的i:
打印(i[0])
#选择特征值最大的k个特征向量
矩阵w=np.hstack((eig_对[0][1]。重塑(784,1),eig_对[1][1]。重塑(784,1)))
打印('矩阵W:\n',矩阵W)
转换=矩阵w.T.dot(数据链T)

看看矩阵是如何创建的。h_stack函数获取数组的元组,并将它们水平堆叠。您要做的是创建一个元组,其中包含k个最大特征值的特征向量,并创建矩阵:

eigenvectors = tuple([eig_pairs[i][1].reshape(784,1) for i in range(k)])
matrix_w = np.hstack(eigenvectors)

代码片段看起来是正确的,但在文本部分,您是指
matrix\u w
而不是
matrix\u h
当然,您完全正确。谢谢,我修好了:)