Scikit-learn: ValueError:RidgeClassifierCV 不支持连续格式

创建于 2016-03-26  ·  3评论  ·  资料来源: scikit-learn/scikit-learn

如果您运行以下代码:

import numpy as np
from sklearn.linear_model.ridge import RidgeClassifierCV

classifier = RidgeClassifierCV(scoring='roc_auc')
x = np.array([[1, 2, 3], [3, 4, 9], [4, 9, 1], [8, 0, 4], [1, 1, 4], [1.1, 2, 4]])
y = np.array([True, False, True, False, True, False])
classifier.fit(x, y)

您收到异常:_ValueError:不支持连续格式_与堆栈跟踪:

文件“E:/myfolder/cv_issue.py”,第 7 行,在分类器.fit(x, y)
文件“E:Anaconda2libsite-packagessklearnlinear_modelridge.py”,第 1258 行,合适
_BaseRidgeCV.fit(self, X, Y, sample_weight=sample_weight)
文件“E:Anaconda2libsite-packagessklearnlinear_modelridge.py”,第1022行,合适
estimator.fit(X, y, sample_weight=sample_weight)
文件“E:Anaconda2libsite-packagessklearnlinear_modelridge.py”,第 965 行,合适
对于我在范围内(len(self.alphas))]
文件“E:Anaconda2libsite-packagessklearnmetricsscorer.py”,第 159 行,在 __call__ 中
raise ValueError("{0} 格式不受支持".format(y_type))
ValueError:不支持连续格式

但是,很明显,我提供了一个二进制输出,所以我不希望这里出现这样的错误。 如果你用RidgeClassifierCV(scoring='roc_auc')替换RidgeClassifierCV(scoring='roc_auc', cv=2) ,代码运行良好。

我的版本:

Windows-8.1-6.3.9600
('Python', '2.7.11 |Anaconda 2.5.0 (64-bit)| (默认, Jan 29 2016, 14:26:21) [MSC v.1500 64 位 (AMD64)]')
('NumPy', '1.10.4')
('SciPy', '0.17.0')
('Scikit-Learn', '0.17')

最有用的评论

“roc_auc”是分类或排名指标,而不是回归指标。 所以它不接受连续的 y。

所有3条评论

嗨,这里传递给记分员的值似乎是ycv_values[:,i]作为y_truey_score传递给roc_auc_score ,但在记录器中, _ThresholdScorer接受参数Xy现在对应于y_truey_score在你的情况下是

[ 1. -1.  1. -1.  1. -1.] 
[ 0.45824999 -1.64622488  0.6707735  -0.74680963  0.07694918  0.49169546]

因此, y_type的检查会引发continuous类型的错误。 我不确定这是否是这里的预期行为,因为 Threshold scorer 是为此目的设计的。 抱歉,这里帮不上什么忙。

“roc_auc”是分类或排名指标,而不是回归指标。 所以它不接受连续的 y。

我相信 OP 表示他的目标是离散的,而不是连续的。 我也遇到了同样的错误,目标是离散的,只有 0 和 1。

此页面是否有帮助?
0 / 5 - 0 等级