我最近看了一堆sklearn教程,这些教程都很相似,因为他们通过以下方式获得了合适的优点:
clf.fit(X_train, y_train)
clf.score(X_test, y_test)
它会吐出来:
0.92345...
或其他一些分数。
我很好奇clf.score函数的参数或它如何评分模型。我浏览了整个互联网,但似乎无法找到它的文档。有人知道吗?
它需要一个特征矩阵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_true
)和一个由模型预测的值数组(y_score
)作为主要参数,但也可能接收一些特定于度量的其他参数。评分函数通常不需要X值。
我建议查看评分函数的源代码,以了解它们的工作原理。
以下是scikit-learn中的评分函数列表。
这是classifier dependent。每个分类器都提供自己的评分功能。
Estimator评分方法:Estimators有一个评分方法,为他们设计解决的问题提供默认评估标准。本页未对此进行讨论,但在每个估算工具的文档中都有讨论。
除了在其中一个答案中提供给您的文档之外,您可以做的唯一额外事情是阅读估算器提供的参数类型。例如,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,optional(default = True)如果为False,则返回正确分类的样本数。否则,返回正确分类的样本的分数。
sample_weight:shape = array = [n_samples],可选样本权重。
返回: score:float如果normalize == True,则返回正确分类的样本(float)的分数,否则返回正确分类的样本数(int)。
最佳性能是1,normalize == True,normalize == False的样本数。
有关更多信息,请参阅:[https://scikit-learn.org/stable/modules/model_evaluation.html#accuracy-score][1]