sklearn的score函数的参数是啥?

Posted

技术标签:

【中文标题】sklearn的score函数的参数是啥?【英文标题】:What are the parameters for sklearn's score function?sklearn的score函数的参数是什么? 【发布时间】:2014-08-18 22:30:39 【问题描述】:

我最近看了一堆 sklearn 教程,它们的相似之处在于它们通过以下方式对拟合优度进行了评分:

clf.fit(X_train, y_train)
clf.score(X_test, y_test)

它会吐出来:

0.92345...

或其他一些分数。

我很好奇 clf.score 函数的参数或它如何对模型进行评分。我浏览了整个互联网,但似乎找不到它的文档。有人知道吗?

【问题讨论】:

我相信它取决于模型 那么评分函数从 SVM、线性模型和其他分类器和回归器变化?这看起来很头疼! 【参考方案1】:

不确定我是否正确理解了您的问题。显然,为了计算一些错误或相似性,大多数评分函数会接收一组参考值 (y_true) 和一组由模型预测的值 (y_score) 作为主要参数,但也可能会接收一些其他参数,具体用于指标。评分函数通常不需要 X 值。

我建议查看评分函数的源代码以了解它们的工作原理。

这是scikit-learn中的评分函数列表。

【讨论】:

【参考方案2】:

它需要一个特征矩阵X_test 和预期的目标值y_test。将 X_test 的预测与 y_test 进行比较,并返回准确度(对于分类器)或 R² 分数(对于回归估计器)。

score 方法的文档字符串中非常明确地说明了这一点。用于分类的读取

Returns the mean accuracy on the given test data and labels.

Parameters
----------
X : array-like, shape = (n_samples, n_features)
    Test samples.

y : array-like, shape = (n_samples,)
    True labels for X.

sample_weight : array-like, shape = [n_samples], optional
    Sample weights.

Returns
-------
score : float
    Mean accuracy of self.predict(X) wrt. y.

和回归的类似。

【讨论】:

从哪里得到 y_test 和 x_test? @zehelvion 您必须准备 X_test 和 y_test,有几种方法可以做到这一点。如果您使用的是 scikit-learn,那么来自 sklearn.model_selection 的 train_test_split 函数就是您要查找的函数。 一个典型的分数度量就像(true_value,预测值),真实值与预测值进行比较,那么为什么我们实际上说 clf.score(X_test, y_test) 这本质上是拟合的语法该模型。您能否通过解释幕后发生的事情来帮助我,或者至少为我指明方向?【参考方案3】:

这是classifier dependent。每个分类器都提供自己的评分功能。

Estimator score 方法:Estimator 有一个 score 方法提供一个 他们设计的问题的默认评估标准 解决。本页未对此进行讨论,但在每个估算者的 文档。

除了在其中一个答案中提供给您的文档之外,您唯一可以做的额外事情就是阅读您的估算器提供的参数类型。例如SVM分类器SVC有如下参数score(X, y, sample_weight=None)

【讨论】:

【参考方案4】:

语法: sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

在多标签分类中,此函数计算子集准确度:为样本预测的标签集必须与 y_true 中对应的标签集完全匹配。

参数: y_true : 一维数组,或标签指示数组/稀疏矩阵 基本事实(正确)标签。

y_pred: 一维数组,或标签指示数组/稀疏矩阵 分类器返回的预测标签。

规范化: bool,可选(默认=True) 如果为 False,则返回正确分类的样本数。否则,返回正确分类样本的分数。

sample_weight : 类似数组的形状 = [n_samples],可选 样本权重。

返回:分数: float 如果 normalize == True,则返回正确分类样本的分数(float),否则返回正确分类样本的数量(int)。

最佳性能是 1 和 normalize == True 和 normalize == False 的样本数。

更多信息可以参考: [https://scikit-learn.org/stable/modules/model_evaluation.html#accuracy-score][1]

【讨论】:

【参考方案5】:

Regressor 的分数计算方法如下:

score(self, X, y, sample_weight=None)[来源] 返回预测的决定系数 R^2。

系数R^2定义为(1 - u/v),其中u是残差平方和((ytrue - ypred) ** 2).sum(),v是总平方和( (ytrue - ytrue.mean()) ** 2).sum()。最好的分数是 1.0,它可以是负数(因为模型可以任意变坏)。始终预测 y 的期望值的常量模型,不考虑输入特征,将获得 0.0 的 R^2 分数。

来自 sklearn 文档。

https://scikit-learn.org/stable/modules/generated/sklearn.dummy.DummyRegressor.html#sklearn.dummy.DummyRegressor.score

【讨论】:

以上是关于sklearn的score函数的参数是啥?的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn中的cross_val_score函数scoring参数设置

sklearn中的模型评估-构建评估函数

sklearn评分函数的参数是什么?

模型的性能评估 用sklearn进行模型评估

sklearn score函数怎么有负数

sklearn 如何计算average_precision_score?