sklearn的score函数参数是什么?

29 投票
6 回答
72321 浏览
提问于 2025-04-18 11:22

我最近看了一些关于sklearn的教程,这些教程都有一个共同点,就是通过以下方式来评估模型的好坏:

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

然后它会输出:

0.92345...

或者其他一些分数。

我对clf.score这个函数的参数很感兴趣,想知道它是怎么给模型打分的。我在网上找了很多资料,但似乎找不到相关的文档。有没有人知道呢?

6 个回答

1

Scikit-learn中的model.score(X,y)计算是基于决定系数,也就是R^2。这个函数很简单,只需要输入model.score= (X_test,y_test)就可以了。它不需要你自己提供y_predicted的值,而是内部计算y_predicted并用它来进行评分。

具体的计算过程是这样的:

u = ((y_test - y_predicted) ** 2).sum()

v = ((y_test - y_test.mean()) ** 2).sum()

score = 1 - (u/v)

这样你就得到了评分!希望这对你有帮助。

2

这和你使用的分类器有关。每种分类器都有自己的一套评分方法。

估计器的评分方法:估计器有一个评分方法,这个方法提供了一个默认的评估标准,用来解决它所设计的问题。这个内容在这页没有讨论,但你可以在每个估计器的文档中找到。

除了在某个答案中给你的文档之外,你能做的唯一额外的事情就是查看你的估计器提供了哪些参数。例如,SVM分类器SVC有以下参数 score(X, y, sample_weight=None)

2

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

我建议你查看评分函数的源代码,以了解它们是如何工作的。

这里有一个在scikit-learn中评分函数的列表。

5

这里是回归模型得分的计算方法:

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

决定系数 R^2 的计算方式是 (1 - u/v),其中 u 是残差平方和,也就是 ((真实值 - 预测值) ** 2).sum(),而 v 是总平方和,也就是 ((真实值 - 真实值的平均值) ** 2).sum()。得分的最佳值是 1.0,但它也可能是负数(因为模型可能表现得非常糟糕)。如果一个模型总是预测 y 的期望值,而不考虑输入特征,它的 R^2 得分将是 0.0。

以上内容来自 sklearn 的文档。

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

31

这个过程需要一个特征矩阵 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.

而回归的说明也是类似的。

撰写回答