我正在尝试根据该文章确定噪音的类型:
我在 win8 64bit 上使用 scikit-learn-0.14.1.win32-py2.7 我知道它指的是 0.15 版,但是在 0.14 版文档中它提到 score 方法可用于 PCA 所以我想它应该通常工作:
sklearn.decomposition.ProbabilisticPCA
问题是,无论我将哪个 PCA 用于 *cross_val_score*,我总是会收到一条类型错误消息,指出估算器 PCA 没有 score 方法:
*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)]