分类算法评估

首先介绍4个基本的定义:
1) TurePositive(TP):指模型预测为(1)的,并且实际上也是1的观察对象的数量。
2) TrueNegative(TN):指模型预测为0,实际上也是0的观测对象数量。
3) FalsePositive(FP):指模型预测为1,实际上是0的观测对象的数量。
4) FalseNegtive(FN):指模型预测为0,实际上是1的观测对象的数量。
基于以上定义构造如下的混淆矩阵:
在这里插入图片描述在这里插入图片描述

  1. ROC曲线
    ROC曲线的纵轴是“真正例率”(TruePositiveRate,简称TPR),横轴是“假正例率”(FalsePositiveRate,简称FPR),两者分别定义为:
    在这里插入图片描述
  2. Gain Chart:Gain Chart主要用来评估模型好坏,如下图所示,横轴为营销人数百分比,纵轴为有回应人数的百分比。①表示在向所有客户进行营销的情况下有回应人数的百分比为100%。图中的直线表示随机挑选的一定量的客户进行营销活动所对应的有回应人数的百分比数值,该直线的斜率为45度。而曲线表示根据数据挖掘结果所呈现的营销对象名单进行营销所得到的有回应人数的百分比值。根据图示数据,假定营销人数被限定在总客户人数的20%,若营销对象随机挑选,则有回应人数的百分比为20%,若运用数据挖掘技术所提供的营销对象名单,则有回应的人数的百分比为50%,后者是前者的2.5倍。
    在这里插入图片描述
    通常情况下,我们采用曲线与X轴和Y轴围成的面积的大小来判断模型的好坏,如图所示,面积越大,模型越好,反之则越差。
    10)Lift Chart:Lift Chart是在Gain的基础上,保持横轴不变,即营销人数的百分比,而纵轴换为绩效的增益。
    11)Profit Chart:Profit Chart表示模型带来的收益,而不是模型的正确率。故要想将Gain Chart 等转换为Profit Cahrt,即必须知道营销活动的收入与成本。
    算法实现
## Y_pred_result:预测结果所在的数据框
## pred_Mark: 预测Mark
## real_Mark: 实际Mark    
def calIndex(Y_pred_result , pred_Mark , real_Mark ):
    ## 预测为1,实际为1
    TP = len(Y_pred_result.loc[(Y_pred_result[pred_Mark] == 1) & (Y_pred_result[real_Mark] == 1)]) 
    # 预测为0实际为1
    FN = len(Y_pred_result.loc[(Y_pred_result[pred_Mark] == 0) & (Y_pred_result[real_Mark] == 1)]) 
    # 预测为1,实际为0
    FP = len(Y_pred_result.loc[(Y_pred_result[pred_Mark] == 1) & (Y_pred_result[real_Mark] == 0)]) 
    # 预测为1,实际为0
    TN = len(Y_pred_result.loc[(Y_pred_result[pred_Mark] == 0) & (Y_pred_result[real_Mark] == 0)]) 
    return TP , FN , FP , TN
 # 准确率
    verify_accuracy = accuracy_score(verify_y, verify_predictions) #使用sklearn进行比较正确率
    print ("verify Accuary: %.2f%%" % (verify_accuracy * 100.0))
    # 命中率
    verify_precision = precision_score(verify_y, verify_predictions) #使用sklearn进行比较命中率
    print ("precision_score: %.2f%%" % (verify_precision * 100.0))
    # 召回率
    verify_recall = recall_score(verify_y, verify_predictions) #使用sklearn进行比较命中率
    print ("recall_score: %.2f%%" % (verify_recall * 100.0))
    # f1-score
    f1_measure = f1_score(verify_y, verify_predictions) #使用sklearn进行比较命中率
    print ("f1_score: %.2f%%" % (f1_measure * 100.0))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值