【发布时间】:2020-03-30 08:56:29
【问题描述】:
我的任务是实现我的 PCA 代码,以将数据转换为二维字段以进行 KNN 分配。我的 PCA 代码使用称为 PCevecs 的特征向量创建了一个数组。
def __PCA(data):
#Normalize data
data_cent = data-np.mean(data)
#calculate covariance
covarianceMatrix = np.cov(data_cent, bias=True)
#Find eigenvector and eigenvalue
eigenvalue, eigenvector= np.linalg.eigh(covarianceMatrix)
#Sorting the eigenvectors and eigenvalues:
PCevals = eigenvalue[::-1]
PCevecs = eigenvector[:,::-1]
return PCevals, PCevecs
分配使用 PCA 转换训练数据。返回的 PCevecs 具有通过调用 print(PCevecs.shape) 给出的形状 (88, 88)。训练数据的形状为 (88, 4)。
np.dot(trainingFeatures, PCevecs[:, 0:2])
当代码运行时,我收到错误消息“ValueError:形状 (88,4) 和 (88,2) 未对齐:4 (dim 1) != 88 (dim 0)”。我可以看到数组不匹配,但我看不出我在 PCA 实现上做错了什么。我试图在 Stackoverflow 上查看类似的问题。我还没有看到任何人以相同的方式对特征向量和特征值进行排序。
【问题讨论】:
-
您想通过
np.dot()操作实现什么目标?