我最近查看了一堆sklearn教程,它们都有一个共同点:通过以下方法来评估拟合效果:
clf.fit(X_train, y_train)
clf.score(X_test, y_test)
它将会输出:
0.92345...
或其他得分。
我对clf.score函数的参数或它如何评估模型的方式很感兴趣。我在互联网上搜索了很多,但好像找不到相关文档。有人知道吗?
我最近查看了一堆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.
回归分析的公式也类似。
除了在答案中给出的文档之外,您唯一可以做的额外事情就是阅读您的估计器提供的参数类型。例如,SVM分类器SVC具有以下参数score(X,y,sample_weight = None)。估计器评分方法:估计器具有得分方法,为其设计解决的问题提供默认评估标准。这在本页中没有讨论,但在每个估计器的文档中有说明。
y_true
)和一个由您的模型预测的值数组(y_score
)作为主要参数,但也可能接收某些其他特定于度量标准的参数。评分函数通常不需要 X 值。语法: sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
在多标签分类中,此函数计算子集准确性:对于一个样本,预测的标签集必须与y_true中相应的标签集完全匹配。
参数: y_true : 1d 数组或标签指示器数组/稀疏矩阵 正确的标签(即地面真实值)。
y_pred: 1d 数组或标签指示器数组/稀疏矩阵 分类器返回的预测标签。
normalize : bool, 可选 (默认为True) 如果为False,则返回正确分类的样本数。否则,返回正确分类的样本比例。
sample_weight : 形状为[n_samples]的数组,可选 样本权重。
返回值:
score : 浮点数
如果normalize == True,则返回正确分类的样本比例(float),否则返回正确分类的样本数(int)。
当normalize == True时,最佳表现为1,而当normalize == False时,最佳表现为样本数。
更多信息请参考: [https://scikit-learn.org/stable/modules/model_evaluation.html#accuracy-score][1]
具体做法如下:
u = ((y_test - y_predicted) ** 2).sum()
v = ((y_test - y_test.mean()) ** 2).sum()
score = 1 - (u/v)
这样你就能得到分数了!希望对你有所帮助。