scikit-learn PCA 没有“分数”方法

Posted

技术标签:

【中文标题】scikit-learn PCA 没有“分数”方法【英文标题】:scikit-learn PCA doesn't have 'score' method 【发布时间】:2013-11-24 11:23:20 【问题描述】:

我正在尝试根据那篇文章确定噪音的类型:

Model selection with Probabilistic (PCA) and Factor Analysis (FA)

我在 win8 64 位上使用 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)]

【问题讨论】:

数据可以在这里找到:kaggle.com/c/data-science-london-scikit-learn/data 使用概率 PCA,不会出现错误。然而,示例通常只适用于它们附带的版本。 谢谢安德烈亚斯,这是正确的。如果您使用概率 PCA,它可以正常工作。他们没有为 14.1 版本提供任何示例,但它可以工作。我想在新版本中它也适用于 PCA 【参考方案1】:

好的,我想我找到了问题所在。它不适用于 PCA,但确实适用于 PPCA 但是,通过不提供 cv 编号,cross_val_score 会自动设置 3 倍交叉验证 创建了 3 个大小为 334、333 和 333 的集合(我的初始训练集包含 1000 个样本) 由于 nympy.mean 无法在不同大小的集合之间进行比较(334 vs 333),python 引发了一个例外。 谢谢

【讨论】:

这应该不是问题。

以上是关于scikit-learn PCA 没有“分数”方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 scikit-learn PCA 找到具有最高方差的维度

在 scikit-learn 中从 PCA 中查找和利用特征值和特征向量

Scikit-learn,获取每个类的准确度分数

用scikit-learn学习主成分分析(PCA)

scikit-learn 中的 PCA 投影和重建

PCA详解-并用scikit-learn实现PCA压缩红酒数据集