その記事に基づいてノイズの種類を特定しようとしています。
確率論的 (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)]