2

その記事に基づいてノイズの種類を特定しようとしています。

確率論的 (PCA) および因子分析 (FA) によるモデル選択

私はwin8 64ビットでscikit-learn-0.14.1.win32-py2.7を使用しています。バージョン0.15を参照していることは知っていますが、バージョン0.14のドキュメントでは、スコアメソッドがPCAで使用できると言及されているため、通常はそうすべきだと思います仕事:

sklearn.decomposition.ProbabilisticPCA

問題は、*cross_val_score* に使用する PCA に関係なく、推定 PCA にスコア メソッドがないというタイプ エラー メッセージが常に表示されることです。

*TypeError: スコアリングが指定されていない場合、渡される推定器には 'score' メソッドが必要です。推定器 PCA(copy=True, n_components=None, whiten=False) はそうではありません.*

なぜそれが起こっているのですか?

よろしくお願いします

クリストス

X には 40 個の特徴の 1000 個のサンプルがあります

コードの一部を次に示します。

import numpy as np
import csv
from scipy import linalg
from sklearn.decomposition import PCA, FactorAnalysis
from sklearn.cross_validation import cross_val_score
from sklearn.grid_search import GridSearchCV
from sklearn.covariance import ShrunkCovariance, LedoitWolf

#read in the training data
train_path = '<train data path>/train.csv'

reader = csv.reader(open(train_path,"rb"),delimiter=',')
train = list(reader)
X = np.array(train).astype('float')

n_samples = 1000
n_features = 40
n_components = np.arange(0, n_features, 4)

def compute_scores(X):
    pca = PCA()

    pca_scores = []
    for n in n_components:
        pca.n_components = n
        pca_scores.append(np.mean(cross_val_score(pca, X, n_jobs=1)))

    return pca_scores

pca_scores = compute_scores(X)
n_components_pca = n_components[np.argmax(pca_scores)]
4

1 に答える 1

-1

わかりました、私は問題を見つけたと思います。PCA では機能しませんが、PPCA では機能します。しかし、cv 番号を指定しないことで、cross_val_score は自動的に 3 分割クロス検証を設定し、サイズ 334、333、333 の 3 つのセットを作成しました (私の最初のトレーニング セットには 1000 サンプルが含まれています)。 nympy.mean は異なるサイズ (334 対 333) のセットを比較できないため、python で例外が発生します。どうも

于 2013-11-12T19:56:52.310 に答える