sklearn的score函数参数是什么?
我最近看了一些关于sklearn的教程,这些教程都有一个共同点,就是通过以下方式来评估模型的好坏:
clf.fit(X_train, y_train)
clf.score(X_test, y_test)
然后它会输出:
0.92345...
或者其他一些分数。
我对clf.score这个函数的参数很感兴趣,想知道它是怎么给模型打分的。我在网上找了很多资料,但似乎找不到相关的文档。有没有人知道呢?
6 个回答
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)
这样你就得到了评分!希望这对你有帮助。
这和你使用的分类器有关。每种分类器都有自己的一套评分方法。
估计器的评分方法:估计器有一个评分方法,这个方法提供了一个默认的评估标准,用来解决它所设计的问题。这个内容在这页没有讨论,但你可以在每个估计器的文档中找到。
除了在某个答案中给你的文档之外,你能做的唯一额外的事情就是查看你的估计器提供了哪些参数。例如,SVM分类器SVC有以下参数 score(X, y, sample_weight=None)
我不太确定我是否正确理解了你的问题。显然,要计算一些错误或相似度,大多数评分函数会接收一组参考值(y_true
)和一组你模型预测的值(y_score
)作为主要参数,但它们也可能会接收一些其他特定于指标的参数。评分函数通常不需要X值。
我建议你查看评分函数的源代码,以了解它们是如何工作的。
这里有一个在scikit-learn中评分函数的列表。
这里是回归模型得分的计算方法:
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 的文档。
这个过程需要一个特征矩阵 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.
而回归的说明也是类似的。