1. itertools.product  进行数据的多种组合

intertools.product(range(0, 1), range(0, 1))  组合的情况[0, 0], [0, 1], [1, 0], [1, 1]

2. confusion_matrix(test_y, pred_y)  # 构造混淆矩阵

混淆矩阵是TP(正的预测成正的), FP(正的预测成负的), TN(负的预测成负的), FN(负的预测成正的)

从混淆矩阵中,我们可以很清楚的看出这个信息,这是一个信用欺诈的案例, 134表示的是将欺诈的预测出来的数值, 13表示的是将欺诈的预测成正常的, 131表示的是将正常的预测成正常的,18表示将正常的预测成欺诈的

精度: (134 + 131) / (134+131+13+18)

召回率: (134) / (134 + 13)

F1得分 : (1 / (精度 + 召回率))

代码:使用的是一个下采样的欺诈数据的代码,使用confusion_matrix 获得混合矩阵,然后使用plt.imshow() 进行画图操作

  1. best_c = printing_KFold_score(under_train_x, under_train_y)
  2.  
  3. import itertools
  4. # 画出混淆矩阵, 导入confusion_matrix
  5. def plot_matrix(conf, classes,
  6. title='confusion matrix', cmap=plt.cm.Blues):
  7. # 展示直方图
  8. plt.imshow(conf, cmap=cmap)
  9. # 图片标题
  10. plt.title(title)
  11. # 图片颜色条
  12. plt.colorbar()
  13. # 设置x轴和y轴位置
  14. x_index = np.array(classes)
  15. # 第一个参数是位置,第二个参数是标签名
  16. plt.xticks(x_index, classes, rotation=0)
  17. plt.yticks(x_index, classes)
  18. conf_mean = conf.max() / 2
  19. # itertools.product
  20. # [0, 1] & [0, 1]
  21. # [0, 0], [0, 1], [1, 0], [1, 1]
  22. # 将数字添加到混合矩阵中
  23. for i, j in itertools.product(range(conf.shape[0]), range(conf.shape[1])):
  24. plt.text(j, i, conf[i, j], horizontalalignment='center',
  25. color='white'if conf[i, j] > conf_mean else 'black')
  26. # 画出的图更加的紧凑
  27. plt.tight_layout()
  28.  
  29. from sklearn.metrics import confusion_matrix
  30. # 建立逻辑回归模型
  31. lr = LogisticRegression(C=best_c, penalty='l1')
  32. # 模型训练
  33. lr.fit(under_train_x, under_train_y)
  34. # 模型预测
  35. pred_y = lr.predict(under_text_x)
  36. # 获得混合矩阵
  37. conf = confusion_matrix(under_test_y, pred_y)
  38. # 画图
  39. plot_matrix(conf, classes=[0, 1])
  40. # accrurracy
  41. # 精度
  42. accurracy = (conf[0, 0] + conf[1, 1]) / (conf[0, 0] + conf[0, 1] + conf[1, 0] + conf[1, 1])
  43. # 召回率
  44. recall = conf[1, 1] / (conf[1, 0] + conf[1, 1])
  45. # F1得分
  46. F1_score = 1 / (accurracy + recall)
  47. plt.show()

机器学习入门-混淆矩阵-准确度-召回率-F1score 1.itertools.product 2. confusion_matrix(test_y, pred_y)的更多相关文章

  1. Andrew Ng机器学习课程笔记--week6(精度&召回率)

    Advice for applying machine learning 本周主要学习如何提升算法效率,以及如何判断学习算法在什么时候表现的很糟糕和如何debug我们的学习算法.为了让学习算法表现更好 ...

  2. 混淆矩阵(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)

    原理 在机器学习中, 混淆矩阵是一个误差矩阵, 常用来可视化地评估监督学习算法的性能. 混淆矩阵大小为 (n_classes, n_classes) 的方阵, 其中 n_classes 表示类的数量. ...

  3. 机器学习入门-概率阈值的逻辑回归对准确度和召回率的影响 lr.predict_proba(获得预测样本的概率值)

    1.lr.predict_proba(under_text_x)  获得的是正负的概率值 在sklearn逻辑回归的计算过程中,使用的是大于0.5的是正值,小于0.5的是负值,我们使用使用不同的概率结 ...

  4. 机器学习 F1-Score 精确率 - P 准确率 -Acc 召回率 - R

    准确率 召回率 精确率 : 准确率->accuracy, 精确率->precision. 召回率-> recall. 三者很像,但是并不同,简单来说三者的目的对象并不相同. 大多时候 ...

  5. 混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值

    准确率.精确率(查准率).召回率(查全率).F1值.ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前 ...

  6. 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC

    评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. ...

  7. 混淆矩阵、准确率、召回率、ROC曲线、AUC

    混淆矩阵.准确率.召回率.ROC曲线.AUC 假设有一个用来对猫(cats).狗(dogs).兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结.假设总共 ...

  8. 机器学习入门-交叉验证选择参数(数据切分)train_test_split(under_x, under_y, test_size, random_state), (交叉验证的数据切分)KFold, recall_score(召回率)

    1. train_test_split(under_x, under_y, test_size=0.3, random_state=0)  # under_x, under_y 表示输入数据, tes ...

  9. 机器学习-Confusion Matrix混淆矩阵、ROC、AUC

    本文整理了关于机器学习分类问题的评价指标——Confusion Matrix.ROC.AUC的概念以及理解. 混淆矩阵 在机器学习领域中,混淆矩阵(confusion matrix)是一种评价分类模型 ...

随机推荐

  1. MySQL Disk--SSD 特性

    ======================================================================= SSD 特性 .随机读能力非常好,连续读性能一般,但比普 ...

  2. Win8被禁购信息战由暗到明

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jhzyz/article/details/26629277 冯强/文 关于中国政府禁止採购微软Win ...

  3. tomcat源码阅读之单点登录

    一.SSO概念: 单点登录,Single Sign-On,简写为 SSO,是一个用户认证的过程,允许用户一次性进行认证后,就可访问系统中不同的应用:而无需要访问每个应用时,都重新输入用户和密码. 实现 ...

  4. mysql 事务隔离级别详解

    事物的 隔离级别,说简单非常简单(新手也能说出 是个隔离级别 和 影响),说男也非常难.(很多 有几年编程 经验的程序员依旧搞不清楚) 废话不多少 直接开始: 事务的隔离级别 是用来描述 事务的读关系 ...

  5. java Scanner中的hasNext()方法

    hasNext()方法判断输入(文件.字符串.键盘等输入流)是否还有下一个输入项,若有,返回true,反之false. Scanner sc = new Scanner(new File(" ...

  6. golang cannot assign to

    问题: # command-line-arguments .\example.go:22: cannot assign to m.V.(BasicMessage).Length 想在函数中修改inte ...

  7. bzoj2026: [SHOI2009]Coin

    Description Constantine刚结束在MySky Island的度假,正准备离开的时候,他想送给她的好朋友YY一份特别的礼物——MySky Island上特别的手工艺品宝石纪念币.宝石 ...

  8. bzoj2765 铁人双项比赛

    Description 铁人双项比赛是吉林教育学院的一项传统体育项目.该项目比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.每个参赛选手所擅长的项目不同, ...

  9. [转]IIS 允许/禁止 目录浏览

    <?xml version="1.0" encoding="utf-8"?> <configuration> <system.we ...

  10. [转]NSIS常用代码整理

    转自 http://www.flighty.cn/html/bushu/20120827_156.html 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ ; ...