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

1

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

Здесь функция оценки не работает хорошо.

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

  • 0
    Что ты имеешь в виду под неэффективной работой?
  • 0
    отражая некоторую ошибку как: NameError: имя 'оценка' не определено
Показать ещё 5 комментариев
Теги:
pycharm

1 ответ

0

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

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

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

  • 0
    Хорошо, это работает, но другая ошибка возникает, когда я использовал его как mat1 = pca.score (trainData [:, 0: no_components]).
  • 0
    ValueError: операнды не могут быть переданы вместе с фигурами (738,404) (40000,)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню