模型评估指标——sklearn.metrics模块
sklearn.metrics模块
- 该模块主要包含分数函数、性能指标、成对指标、距离计算
1. 分类性能指标
1.1. accuracy_score()
-
计算所有样本中分类正确样本所占的比例
-
语法
## 语法 sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)
y_true:y的真实值
y_pred:y的预测值
normalize:若为True(默认),返回分类得分,若为False,返回分类正确的样本个数
sample_weight:样本权重
-
返回值是得分,若normalize=True,返回值是float型
-
在二分类问题中,等价于
jaccard_score
1.2. f1_score()
-
计算F1得分,即precision和recall的调和平均数
-
若为多分类或多标签问题,则是每个类别的F1得分的平均值,各个类别所占的权重根据参数average指定
-
语法
## 语法 sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
y_true:y的真实值
y_pred:y的预测值
labels:array-like,若average!='binary'时,表示标签集的顺序
pos_label:str or int,当average='binary',且是二分类问题时,指明要计算得分的类别,当average!='binary'时,不起作用
average:{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} or None,针对多分类问题,若为None,则返回每类的得分,否则,通过指定的方式计算每类得分的平均值
micro
:通过计算所有真阳性、假阴性、假阳性来全局的计算得分macro
:计算每类的得分,再求未加权平均值weighted
:计算每类的得分,再计算加权平均值,根据每类的真实样本数设置权重samples
:计算每个实例的指标,再求均值binary
:仅适用于二分类问题,返回pos_label指定的类别的结果sample_weight:样本权重
zero_division:当precision或recall无定义时,默认指标返回0,并引发警告
-
返回值为F1得分,float或float的数组
1.3. jaccard_score()
-
计算jaccard相似系数得分,等于两个标签集的交集的大小除以并集的大小
-
语法
## 语法 sklearn.metrics.jaccard_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
参数与f1_score的参数一样
-
返回值为jaccard相似系数得分,float或float的数组
1.4. roc_auc_score()
-
计算auc,即ROC曲线下面积
-
语法
sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)
y_true:y的真实标签
y_score:估计器计算出的每个样本属于每种类别的概率,如果是二分类,则是
estimator.predict_proba(X)[:,1]
,或者是estimator.decision_function(X)
;如果是多分类或多标签,则是(n_samples, n_classes)形状的概率average:{‘micro’, ‘macro’, ‘samples’, ‘weighted’} or None
多分类仅对macro和weighted有效,None仅对multi_class='ovr'有效,micro仅对multi_class='ovr'有效
sample_weight:样本权重
max_fpr:float > 0 and <= 1,仅对二分类有效,若不是None,对AUC在[0,max_fpr]范围内标准化
multi_class:{‘raise’, ‘ovr’, ‘ovo’},仅适用于多分类
raise
:引发错误ovr
:One-vs-rest,计算每类相对于其余类别的AUC,对类别不均衡较敏感ovo
:One-vs-one,计算所有可能的成对类别的平均AUC,对类别不均衡不敏感labels:仅适用于多分类目标,索引y_score种类别标签的列表,即y_score中的类别是按照labels中顺序排列的
-
返回auc值,float
1.5. roc_curve()
-
仅限于二分类问题,计算真阳率、假阳率
-
语法
sklearn.metrics.roc_curve(y_true, y_score, *, pos_label=None, sample_weight=None, drop_intermediate=True)
y_true:真实类别,如果不是{-1,1}或{0,1},那么pos_label参数需要明确给出
pos_label:正类的标签,若为None,而二分类为{-1,1}或{0,1},则正类被设置为1
sample_weight:样本权重
drop_intermediate:是否去掉一些不会出现在绘制的ROC曲线上的次优阈值
-
返回值
fpr:针对每个阈值的假阳率
tpr:针对每个阈值的真阳率
thresholds:一列递减的用来判断正负样本的阈值,最大值设置为
max(y_score)+1
1.6. auc()
-
使用梯形规则计算AUC值
sklearn.metrics.auc(x, y)
x:x的坐标,递增或递减的,即假阳率
y:y的坐标,即真阳率
1.7. classification_report()
-
构建一个文本报告,展示主要的分类指标
-
语法
sklearn.metrics.classification_report(y_true, y_pred, *, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False, zero_division='warn')
labels:要包含在报告中的标签索引的列表
target_names:对应labels的名字
digits:格式化输出浮点型数据的小数位数,若output_dict=True,则该参数会被忽视,不会四舍五入
output_dict:若为True,则返回输出为字典
-
返回值为str或dict,返回每类的precision, recall, F1 score
2. 回归性能指标
2.1. r2_score()
-
计算回归决定系数
最大值是1,等于1表示性能最好,可能会出现负值
-
语法
sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)
y_true:目标真实值
y_pred:目标的预测值
sample_weight:样本权重
multioutput:{‘raw_values’, ‘uniform_average’, ‘variance_weighted’}, array-like of shape (n_outputs,) or None,用来定义多个输出分数的聚合
raw_values
:在多输出输入的情况下,返回一组完整的分数。uniform_average
:所有输出的分数均采用相同权重进行平均variance_weighted
:加权平均,根据每个单独输出的方差进行加权。force_finite:若为True,当得分出现NaN和-Inf时,分别用1和0代替
-
返回值是
,float
2.2. mean_squared_error()
-
计算MSE,均方误差
n是样本量
-
语法
sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared=True)
multioutput:{‘raw_values’, ‘uniform_average’} or array-like of shape (n_outputs,)
squared:若为True,返回MSE值,若为False,返回RMSE值
-
返回float or ndarray of floats,非负,当等于0时模型效果最好
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码