task_1

本文详细介绍了机器学习中分类和回归任务的评估指标,包括准确率、精确率、召回率、F1分数、AUC、MAE、MSE、RMSE和R2分数等。这些指标用于衡量模型预测的准确性、稳定性及误差大小,帮助优化模型性能。通过实例代码展示了如何计算这些指标,为理解和应用提供了清晰的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

task_1

赛题数据概况:

数据集(条):训练集:5w;测试集A:5w;测试集B:5w;

特征列(31列):匿名特征(15列)和非匿名特征

全部数据已经脱敏、编码。

预测评估指标

平均绝对误差(Mean Absolute Error,MAE)

评估指标拓展

分类算法:

混淆矩阵(Confuse Matrix)

  • (1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive )

  • (2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative )

  • (3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive )

  • (4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative )

    准确率(Accuracy) = TP+TN / TP+TN+FP+FN;准确率是常用的一个评价指标,但是不适合样本不 均衡的情况。

    精确率(Precision) 又称查准率,正确预测为正样本(TP)占预测为正样本(TP+FP)的百分比。

    ​ Precision=TP / TP+FP。

    召回率(Recall) 又称为查全率,正确预测为正样本(TP)占正样本(TP+FN)的百分比。

    ​ Recall=TP / TP+FN

    F1 Score 精确率和召回率是相互影响的,精确率升高则召回率下降,召回率升高则精确率下降, 如果需要兼顾二者,就需要精确率、召回率的结合F1 Score。

    ​ F1−Score=2 / (1/Precision) + (1/ RecallF)

    ​ P-R曲线(Precision-Recall Curve) P-R曲线是描述精确率和召回率变化的曲线

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nWsx4RZ-1618326707933)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413224341269.png)]

    回归算法评估指标:

    均方误差(MSE)的定义如下,、

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STUzTcp5-1618326707935)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413224812021.png)]

    均方根误差(RMSE)

    ​ 是回归模型的典型指标,用于指示模型在预测中会产生多大的误差,对于较 大的误差, 权重较高。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkMXZSC3-1618326707937)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413224919926.png)]y是实际值,而y~ 是预测值, RMSE越小越 好。

    平均绝对误差(MAE)

    ​ 用来衡量预测值与真实值之间的平均绝对误差,MAE越小表示模型越好,其定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFWrMM8a-1618326707940)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413225100389.png)]

R2分数

​ sklearn在实现线性回归时默认采用了[公式]指标,[公式]越大表示模型越好,其定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wd4kazw3-1618326707942)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413225219383.png)]

​ 其中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0pnSvBv-1618326707945)(https://www.zhihu.com/equation?tex=%5Coverline%7By%7D)]表示真实值的平均值。可能[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lcAEhVqz-1618326707946)(https://www.zhihu.com/equation?tex=R%5E2)]的好处在于其结果进行了归一化,更容易看出模型间的差距。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LKLi9ZdU-1618326707947)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210413225303300.png)]

偏差:

​ 描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。

方差:

​ 描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。

分析赛题

什么是EDA?

分类指标理解

准确率(Accuracy)、Recall、F1-score、AUC

代码如下:

## accuracy
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred))
"""
结果
ACC: 0.75
"""


## Precision,Recall,F1-score
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]
print('Precision',metrics.precision_score(y_true, y_pred))
print('Recall',metrics.recall_score(y_true, y_pred))
print('F1-score:',metrics.f1_score(y_true, y_pred))
"""
Precision 1.0
Recall 0.5
F1-score: 0.666666666667
"""


## AUC
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))
"""
AUC socre: 0.75
"""
回归指标理解
# coding=utf-8
import numpy as np
from sklearn import metrics

# MAPE需要自己实现
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true) / y_true))

y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2])

# MSE
print('MSE:',metrics.mean_squared_error(y_true, y_pred))
# RMSE
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_true, y_pred)))
# MAE
print('MAE:',metrics.mean_absolute_error(y_true, y_pred))
# MAPE
print('MAPE:',mape(y_true, y_pred))

"""
MSE: 0.287142857143
RMSE: 0.535857123815
MAE: 0.414285714286
MAPE: 0.14619047619
"""


## R2-score
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print('R2-score:',r2_score(y_true, y_pred))

R2-score: 0.948608137045
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print('R2-score:',r2_score(y_true, y_pred))

## R2-score: 0.948608137045



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值