我在python中制作了与PCA相关的代码,它从Matlab代码转换为python代码,但最后一行代码不起作用。
我怎么能纠正它?
MatLAB代码:
[coeff,score,~,~,explained] = pca(train);
sm = 0;
no_components = 0;
for k = 1:size(explained,1)
sm = sm+explained(k);
if sm <= 99.4029
no_components= no_components+1;
end
end
m = mean(train,1);
mat1 = score(:,1:no_components);
Python代码:
import numpy as np
import cv2
import os
from sklearn.decomposition import PCA
[x,y] = trainData.shape
pca = PCA(n_components=(x-1))
varPca = pca.fit(trainData)
explainedVariance = pca.explained_variance_ratio_*100
sm = 0
no_components = 0
for k in range(0, x-1):
sm = sm+explainedVariance[k]
if sm <= 99.4029:
no_components= no_components+1
print(no_components)
m = trainData.mean()
print(m)
mat1 = score(trainData[:,0:no_components])
这里得分功能表现不佳。
我怎么能纠正它?
score
是类PCA()
的方法。因此,它只能在PCA()
对象上调用。
在你的情况下,pca
是类PCA()
的对象。因此你可以打电话给pca.score()
。
然而,调用score()
本身假设这是一个函数score()
在某处定义,但事实并非如此。这就是为什么你得到一个NameError
。