精准度(precision)

precision = 正确预测的个数(TP) / 被预测正确的个数(TP+FP)

召回率(recall)

recall = 正确预测的个数(TP)/ 预测个数(FN)

调和平均值 F1-Socre

f1 = 2*精准度 * 召回率 /(精度 * 召回率)

以二分类问题为例

真实\预测 0 1
0 预测negative正确(TN) 预测positive错误(FP)
1 预测positive错误(FN) 预测positive正确(TP)

precision = TP/(TP+FP)
recall = TP/(TP+FN)
求f1_score

from sklearn.metrics import f1_score
f1_score(y_test,y_predict)
# y_test 测试集
# y_predict 预测结果

代码实现上述定义

import numpy as np
from sklearn import datasetsdigits = datasets.load_digits()
X = digits['data']
y = digits['target'].copy()# 手动让digists数据9的数据偏斜
y[digits['target']==9]=1
y[digits['target']!=9]=0from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,random_state=1)
log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)
y_log_predict = log_reg.predict(X_test)# 预测negative正确
def TN(y_true,y_predict):return np.sum((y_true==0)&(y_predict==0))
tn = TN(y_test,y_log_predict) # tn = 399# 预测positive错误
def FP(y_true,y_predict):return np.sum((y_true==0)&(y_predict==1))
fp = FP(y_test,y_log_predict) # fp = 3# 预测negative错误
def FN(y_true,y_predict):return np.sum((y_true==1)&(y_predict==0))
fn = FN(y_test,y_log_predict) # fn = 7# 预测positive正确
def TP(y_true,y_predict):return np.sum((y_true==1)&(y_predict==1))
tp = TP(y_test,y_log_predict) # tp = 41

构造混淆矩阵

def confusion_matrix(y_true,y_predict):return np.array([[TN(y_true,y_predict),FP(y_true,y_predict)],[FN(y_true,y_predict),TP(y_true,y_predict)]])
confusion_matrix(y_test,y_log_predict)
"""
output :
array([[399,   3],[  7,  41]])
"""

精准率

def precision_score(y_true,y_predict):tp = TP(y_true,y_predict)fp = FP(y_true,y_predict)try:return tp/(tp+fp)except:return 0.0
precision_score(y_test,y_log_predict)
"""
output : 0.9318181818181818
"""

召回率

def recall_score(y_true,y_predict):tp = TP(y_true,y_predict)fn = FN(y_true,y_predict)try:return tp/(tp+fn)except:return 0.0
recall_score(y_test,y_log_predict)
"""
output : 0.8541666666666666
"""

以上为拆分理解 在sklearn中都可以直接求得

# 混淆矩阵
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_log_predict)
"""
output:array([[399,   3],[  7,  41]], dtype=int64)
"""
# 精准率
from sklearn.metrics import precision_score
precision_score(y_test,y_log_predict)
"""
output: 0.9318181818181818
"""
# z召回率
from sklearn.metrics import recall_score
recall_score(y_test,y_log_predict)
"""
output: 0.8541666666666666
"""
# classification_report
from sklearn.metrics import classification_report
print(classification_report(y_test,y_log_predict))
"""
output:              precision    recall  f1-score   support0       0.98      0.99      0.99       4021       0.93      0.85      0.89        48avg / total                 0.98      0.98      0.98       450
"""

机器学习--数据判断依据 精确度、召回率、调和平均值F1值相关推荐

  1. 机器学习评价指标:准确度,精确度,召回率,F1值

    1.简单理解 准确率(accuracy):所有预测样本(包括负类)的正确率 精确度(precision):所有预测为正类的正确率 召回率(recall):所有原本为正类被预测为正类的比例 F1值:准确 ...

  2. 分类的性能度量(准确率、精确度、召回率、F1值、Kappa系数)

    在运用机器学习或深度学习进行数据分类时,通常会用一些性能的指标来度量分类的效果.在这里我们介绍最常用的几种分类的性能度量指标(准确率.精确度.召回率.F1值.Kappa系数). 对于二分类问题,我们的 ...

  3. python分类预测降低准确率_【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值...

    [火炉炼AI]机器学习011-分类模型的评估:准确率,精确率,召回率,F1值 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19 ...

  4. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

  5. 详解准确率、精确率、召回率、F1值的含义

    机器学习问题之中,通常需要建立模型来解决具体问题,但对于模型的好坏,也就是模型的泛化能力,如何进行评估呢? 很简单,我们可以定一些评价指标,来度量模型的优劣.比如准确率.精确率.召回率.F1值.ROC ...

  6. 详细理解准确率、精准率、召回率,F1值等评价指标的含义

    转载文章 原博客地址:详解准确率.精确率.召回率.F1值等评价指标的含义 机器学习问题之中,通常需要建立模型来解决具体问题,但对于模型的好坏,也就是模型的泛化能力,如何进行评估?我们可以定一些评价指标 ...

  7. 混淆矩阵、精确率、召回率、F1值、ROC曲线、AUC曲线

    假设一个分类器A,分类器A的作用是告诉你一张图片是不是汉堡,我们如果想知道这个分类器的效果到底好不好,如何做? 最简单的方法就是将手机里所有的图片都扔给分类器A看,让分类器告诉我们哪些是汉堡 我们无法 ...

  8. 准确率、精确率、召回率、F1值、ROC/AUC整理笔记

    文章目录 前言 一.TP.TN.FP.FN概念 二.准确率.精确率(精准率).召回率.F1值 1.准确率(Accuracy) 2.精确率(Precision)查准率 3.召回率(Recall)查全率 ...

  9. 准确率、精确率、召回率、F1值学习笔记

    一.TN.TP.TN.FP.FN概念 TP与TN都是分对了情况,TP是正类,TN是负类.则推断出,FP是错误的正类,FN是错误的负类. 举例:我们需要从一个班级中的人中寻找所有女生,如果把这个任务当成 ...

最新文章

  1. 精简教程版 | 100行代码入手天池CV赛事
  2. oracle时区参考表,ORACLE 时区
  3. 【NLP】Kaggle从零到实践:Bert中文文本分类
  4. 5G常见缩略语大全!
  5. 事务隔离级别神话与误解
  6. 团队的远程管理_不管理远程团队的7种方法
  7. 开源压缩算法brotli_Google的Brotli压缩算法,C ++核心准则以及更多新闻
  8. c#ref和out的相同点_C#中使用ref和out一点认识!
  9. Requst Servervariables
  10. PEOPLE MANAGEMENT 节选
  11. Python-os.mkdir() 方法
  12. oracle 9i/10g/11g(11.2.0.3)安装包和PATCH下载地址汇总
  13. 计算机组成原理期末复习【超实用】
  14. 智慧水务管理系统提升城市水务管理智慧化水平
  15. CSS 常见布局 水平垂直居中对齐
  16. AIOps对监控报警架构的挑战
  17. button和submit的区别
  18. “九个字、一只手、专有云”,有孚网络的云上之路
  19. 一起来学linux:网络命令
  20. sharding-jdbc系列之常见问题(十四)

热门文章

  1. 单向流动的拓扑结构_单向流与乱流净化工程原理是什么-百度经验
  2. 自然语言处理(NLP)入门(1)——前言
  3. 昭阳E47G开机问题
  4. 影视剪辑,自学剪辑的8大技巧
  5. 使用手机或电脑远程连接windows自带的远程桌面
  6. AIS标准(ITU-R M.1371-5)和Python解码模块
  7. CCNA2.0笔记_动态路由
  8. python在图片上绘制标注框
  9. 多点定位MLAT系统解决方案
  10. Component name XXX should always be multi-word