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



我最近看了一堆sklearn教程,它们都是相似的,它们对拟合优度的评分是:

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

它会吐出:

0.92345...

或其他分数

我对clf的参数很好奇。分数函数,或者它如何给模型打分。我在网上找遍了,但似乎找不到相关的文档。有人知道吗?

取一个特征矩阵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.

以下是回归因子的得分计算方法:

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

系数R^2定义为(1 - u/v),其中u为平方和的残差((ytrue - ypred) ** 2).sum(), v为平方和的总和((ytrue - ytrue.mean()) ** 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

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

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

下面是scikit-learn中的评分函数列表

这取决于分类器。每个分类器提供它自己的评分函数。

估计器评分方法:估计器有一个评分方法,提供一个它们所设计的问题的默认评估标准解决。这不在本页讨论,但在每个估计器中都有讨论文档。

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

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

在多标签分类中,该函数计算子集精度:预测样本的标签集必须与y_true中相应的标签集完全匹配。

参数: y_true: 1d类数组,或标签指示数组/稀疏矩阵真实(正确)标签

y_pred: 1d类数组,或标签指示数组/稀疏矩阵预测标签,由分类器返回。

normalize: bool,可选(default=True)如果为False,返回正确分类样本的数量。否则,返回正确分类样本的百分比。

sample_weight: arraylike of shape = [n_samples],可选样本权重。

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

当normalize == True时,最佳性能为1,当normalize == False时,最佳性能为1。

更多信息请参考:[https://scikit-learn.org/stable/modules/model_evaluation.html正确分数][1]

scikit -learn model.score(X,y)的计算是基于判定的系数,即R^2是一个取模型的简单函数。得分= (X_test y_test) 。它不需要在外部提供y_predict 值来为您计算分数,而是在内部计算y_predict 并在计算中使用它。

是这样做的:

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

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

score = 1 - (u/v)

你就得到了分数!

相关内容

  • 没有找到相关文章