Я сделал связанный с PCA код на python, который преобразуется из кода 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
.