Я преобразовал связанный с PCA код Matlab в код Python. Как я могу исправить код последней строки Python? - PullRequest
0 голосов
/ 25 апреля 2019

Я сделал связанный с 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:

Ссылка: https://scikit -learn.org / stable / modules / generate / sklearn.decomposition.PCA.html # sklearn.decomposition.PCA.score

    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])

Здесь функция оценки неэффективна.

Как я могу исправить это?

1 Ответ

0 голосов
/ 26 апреля 2019

score - метод класса PCA().Как таковой он может быть вызван только для PCA() объекта.

В вашем случае pca является объектом класса PCA().Поэтому вы можете вызвать pca.score().

. Однако, вызов score() сам по себе предполагает, что это определенная где-то функция score(), а это не так.Вот почему вы получаете NameError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...