r2_score与accuracy_score都是sklearn.metrics中的计算准确率的函数,r2_score适用于回归问题,accuracy_score适用于分类问题,r2_score的输入可以是浮点数,而accuracy_score必须是整形。以下是我用回归模型得到的一个结果与label:

y_test>>
>>array([37.6, 27.9, 22.6, 13.8, 35.2, 10.4, 23.9, 29. , 22.8, 23.2, 33.2,19. , 20.3, 36.1, 24.4, 17.2, 17.9, 19.6, 19.7, 15. ,  8.1, 23. ,44.8, 23.1, 32.2, 10.8, 23.1, 21.2, 22.2, 24.1, 17.3,  7. , 12.7,17.8, 26.4, 19.6, 25.1,  8.3, 48.8, 34.9, 13.8, 14.4, 30.1, 12.7,27.1, 24.8,  7. , 20.5, 21.5, 14. , 20.4, 22.2, 21.4, 13.5, 19.4,24.7, 43.8, 14.1, 28.6, 19.7, 16.8, 23.2, 16.2, 41.3, 22.7,  8.3,18.4, 24.7, 21.7, 20.6, 16.7, 22.1, 19.4, 27.5, 27.9, 30.1, 17.4,15.4, 31. , 14.2, 19.6, 50. , 21.7, 11.7, 19.4, 13. , 17.5,  9.7,20.3, 18.6, 50. , 19.6, 21.4, 18.4, 22.6, 25. , 15.6, 26.6, 22.4,13.1, 23. , 24.5, 13.1, 50. ,  8.8, 20.6, 12.1, 50. , 24.1, 16.1,23.9, 24.3, 13.1, 30.3, 15.2, 13.8, 26.4, 16.6, 18.9, 17.6, 18.7,33.4, 20.7, 17.1, 23.4, 26.5, 21.4, 21.5, 19.2, 50. , 50. , 23. ,10.5, 17.8, 10.9, 21. , 13.8, 10.5, 22.2, 30.5, 19.4, 15.6, 20.2,19.3, 34.6, 50. , 24. , 18.7, 19.8, 22.5, 13.3, 50. , 11.8, 11. ,23.7, 35.4, 15.2, 24.4, 33.4, 31.6, 13.4, 34.9, 14.4, 35.4, 25.3,18.3, 16.6])
y_pred>>
>>array([42.8935   , 29.481709 , 22.72152  , 11.088902 , 36.746834 ,7.662948 , 25.651855 , 26.15493  , 22.378397 , 20.48603  ,31.907364 , 21.468454 , 19.578026 , 33.49744  , 24.67272  ,19.555578 , 11.753345 , 19.214586 , 18.709223 , 31.103544 ,15.263955 , 18.056026 , 46.764435 , 20.962772 , 28.798655 ,12.729027 , 24.205221 , 19.359875 , 23.571661 , 23.366013 ,14.890141 , 14.506024 , 12.925098 , 18.63654  , 23.8615   ,18.018988 , 24.455381 ,  9.127385 , 44.779827 , 30.45871  ,14.542292 , 12.877257 , 24.352776 , 19.731707 , 24.305807 ,29.125399 ,  6.7823567, 18.452114 , 19.873116 , 15.277843 ,20.32614  , 20.995363 , 23.444897 , 13.011057 , 15.695927 ,22.84157  , 40.82488  , 16.551765 , 28.262928 , 22.071127 ,20.19384  , 23.047424 , 15.8135805, 33.986725 , 20.49732  ,9.303558 , 17.742878 , 23.760605 , 22.339514 , 20.652113 ,17.204014 , 23.734058 , 19.895483 , 16.18355  , 27.209406 ,30.087381 , 23.134361 , 16.869543 , 27.65251  , 15.05091  ,20.549377 , 48.79272  , 19.200642 , 14.059941 , 19.002571 ,15.965145 , 19.86551  , 12.318311 , 18.471226 , 18.855583 ,45.140923 , 17.670074 , 19.20084  , 15.104687 , 21.808868 ,28.353735 , 15.893917 , 27.171299 , 23.067072 , 16.823427 ,20.375757 , 23.710732 , 14.467891 , 45.121735 ,  6.5880733,15.1293745, 11.600112 , 35.43435  , 20.81486  , 20.350136 ,26.358343 , 22.667938 , 12.507106 , 31.27376  , 17.66091  ,14.144321 , 27.607632 , 20.588734 , 19.055277 , 19.021236 ,21.626543 , 32.219128 , 23.16837  , 20.517244 , 22.340687 ,25.62456  , 18.89042  , 21.882483 , 19.37657  , 45.726486 ,45.302307 , 22.80424  , 10.673209 , 15.832766 , 11.838937 ,21.147217 , 15.90029  ,  7.2176995, 22.684954 , 32.22356  ,18.45632  , 16.48581  , 18.660404 , 19.969202 , 31.537455 ,46.797897 , 27.281012 , 17.965696 , 20.106264 , 25.843502 ,13.627041 , 36.923767 , 11.221506 , 11.055304 , 23.62714  ,33.77936  , 15.634852 , 23.593822 , 31.300879 , 31.799702 ,13.880334 , 29.288174 , 18.79593  , 34.537792 , 24.082203 ,19.168953 , 17.133886 ], dtype=float32)
print( r2_score(y_test, y_pred))>>
>>0.8818477865859173

当直接把r2_score直接替换成accuracy_score时,会报错

ValueError                                Traceback (most recent call last)
<ipython-input-81-19995e279f48> in <module>8 y_pred = model.predict(X_test)9
---> 10 print( accuracy_score(y_test, y_pred))D:\Program Files\ANACONDA\lib\site-packages\sklearn\metrics\classification.py in accuracy_score(y_true, y_pred, normalize, sample_weight)174 175     # Compute accuracy for each possible representation
--> 176     y_type, y_true, y_pred = _check_targets(y_true, y_pred)177     check_consistent_length(y_true, y_pred, sample_weight)178     if y_type.startswith('multilabel'):D:\Program Files\ANACONDA\lib\site-packages\sklearn\metrics\classification.py in _check_targets(y_true, y_pred)86     # No metrics support "multiclass-multioutput" format87     if (y_type not in ["binary", "multiclass", "multilabel-indicator"]):
---> 88         raise ValueError("{0} is not supported".format(y_type))89 90     if y_type in ["binary", "multiclass"]:ValueError: continuous is not supported

这是由于accuracy_score只适用于分类问题,而分类的结果都是用int型表示。
加入下列代码:

y_tests=[round(value) for value in y_test]
predictions=[round(value) for value in y_pred]
print( accuracy_score(y_tests, predictions))

结果:

>>0.20359281437125748

为啥结果相差如此之大呢?这是因为y_tests与predictions都四舍五入变成整形了

y_tests>>
>>[38.0,28.0,23.0,14.0,35.0,10.0,24.0,29.0,23.0,23.0,33.0,19.0,20.0,36.0,24.0,17.0,18.0,20.0,20.0,15.0,8.0,23.0,45.0,23.0,32.0,11.0,23.0,21.0,22.0,24.0,17.0,7.0,13.0,18.0,26.0,20.0,25.0,8.0,49.0,35.0,14.0,14.0,30.0,13.0,27.0,25.0,7.0,20.0,22.0,14.0,20.0,22.0,21.0,14.0,19.0,25.0,44.0,14.0,29.0,20.0,17.0,23.0,16.0,41.0,23.0,8.0,18.0,25.0,22.0,21.0,17.0,22.0,19.0,28.0,28.0,30.0,17.0,15.0,31.0,14.0,20.0,50.0,22.0,12.0,19.0,13.0,18.0,10.0,20.0,19.0,50.0,20.0,21.0,18.0,23.0,25.0,16.0,27.0,22.0,13.0,23.0,24.0,13.0,50.0,9.0,21.0,12.0,50.0,24.0,16.0,24.0,24.0,13.0,30.0,15.0,14.0,26.0,17.0,19.0,18.0,19.0,33.0,21.0,17.0,23.0,26.0,21.0,22.0,19.0,50.0,50.0,23.0,10.0,18.0,11.0,21.0,14.0,10.0,22.0,30.0,19.0,16.0,20.0,19.0,35.0,50.0,24.0,19.0,20.0,22.0,13.0,50.0,12.0,11.0,24.0,35.0,15.0,24.0,33.0,32.0,13.0,35.0,14.0,35.0,25.0,18.0,17.0]
predictions>>
>>[43.0,29.0,23.0,11.0,37.0,8.0,26.0,26.0,22.0,20.0,32.0,21.0,20.0,33.0,25.0,20.0,12.0,19.0,19.0,31.0,15.0,18.0,47.0,21.0,29.0,13.0,24.0,19.0,24.0,23.0,15.0,15.0,13.0,19.0,24.0,18.0,24.0,9.0,45.0,30.0,15.0,13.0,24.0,20.0,24.0,29.0,7.0,18.0,20.0,15.0,20.0,21.0,23.0,13.0,16.0,23.0,41.0,17.0,28.0,22.0,20.0,23.0,16.0,34.0,20.0,9.0,18.0,24.0,22.0,21.0,17.0,24.0,20.0,16.0,27.0,30.0,23.0,17.0,28.0,15.0,21.0,49.0,19.0,14.0,19.0,16.0,20.0,12.0,18.0,19.0,45.0,18.0,19.0,15.0,22.0,28.0,16.0,27.0,23.0,17.0,20.0,24.0,14.0,45.0,7.0,15.0,12.0,35.0,21.0,20.0,26.0,23.0,13.0,31.0,18.0,14.0,28.0,21.0,19.0,19.0,22.0,32.0,23.0,21.0,22.0,26.0,19.0,22.0,19.0,46.0,45.0,23.0,11.0,16.0,12.0,21.0,16.0,7.0,23.0,32.0,18.0,16.0,19.0,20.0,32.0,47.0,27.0,18.0,20.0,26.0,14.0,37.0,11.0,11.0,24.0,34.0,16.0,24.0,31.0,32.0,14.0,29.0,19.0,35.0,24.0,19.0,17.0]

在处理分类问题上,把预测结果处理成整数型是很常见的,且分类的结果也只有正确和错误,accuracy_score就是分类准确率分数是指所有分类正确的百分比,而回归任务需要计算的则是你的结果与正确结果之间的差距,这就是r2_score函数的目的。
r2_score也能·作为分类问题的计算准确率,此时的效果与accuracy_score一样,使用方法是加一个关键字 average=‘micro’,当我使用另外一个分类模型的结果(为了防止篇幅过大,这里就不给出了)进行计算时:

print( f1_score(y_test, y_pred, average='micro') )
print(accuracy_score(y_test, y_pred))
>>0.9473684210526315
0.9473684210526315

r2_score与accuracy_score的区别相关推荐

  1. 果蝇算法优化支持向量机

    果蝇算法是前几年发布的一种群智能算法,运算量小,迭代收敛时间短,下面介绍一下果蝇算法优化支持向量机分类. 1.加载库 import random import math import numpy as ...

  2. python笔记:sklearn r2_score和explained_variance_score的本质区别是什么?

    python version 3.8.6 numpy version 1.19.2 sklearn version 0.23.2 Q:我知道r2_score表示的是在总变量中模型解释的百分比.但是ex ...

  3. Bagging与Boosting算法的原理与区别,Boosting算法之一Adaboost原理与代码实现

    1. Bagging和Boosting的原理与区别 在讲解Boosting之前,必须提一下Bagging算法.两者作为机器学习中集成学习的主要算法,其思想是必须理解和掌握的.总的来说Bagging和B ...

  4. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  5. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  6. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  7. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  8. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  9. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

最新文章

  1. (tomcat访问不了的两种解决方法)Bad Request(Invalid Hostname)
  2. 语言 上课点名 缺勤_主播日记5 | “云端”传递的C语言程序设计实验课
  3. C语言学习之输入4个整数,要求按由小到大的顺序输出。
  4. P1117-[NOI2016]优秀的拆分【SA】
  5. clocks_per_sec 时间不正确_测血糖的正确做法:这4步一定别搞错了
  6. java日志文件log4j.properties配置详解
  7. 【kafka】kafka 控制台 消费 ip 却找 域名 报错 Can‘t resolve address UnresolvedAddressException
  8. lettuce配置_skywalking与lettuce哨兵模式
  9. VB禁用CTRL +ALT + DEL(1)
  10. 正确理解TensorFlow中的logits
  11. CISCO路由器的备份与还原(2)
  12. matlab一阶惯性滤波,为什么一阶惯性环节也具有滤波的作用
  13. 抖音起名号项目详细步骤拆分,不懂话术怎么办?
  14. Comparing Mongo DB and Couch DB
  15. 安森美推出ecoSpin系列,重新定义无刷直流电机控制
  16. 【C++游戏设计】用颜色原理打印平面地图
  17. 时钟抖动(Jitter)和时钟偏斜(Skew)
  18. ubuntu linux通过rclone 挂载onedrive 到本地磁盘
  19. 2021 年全国职业院校技能大赛 网络搭建与应用赛项
  20. 矩阵按键及独立按键工作原理

热门文章

  1. 形状因子对禁带的调控
  2. MoviePy - 中文文档2-快速上手-创建和导出video clips
  3. 解决思科 Cisco Packet Tracer 7.3登录问题
  4. 【paper 学习】1、DeepWiFi: Cognitive WiFi with Deep Learning
  5. Leetcode 32 最长合法括号子序列
  6. 如何用mysql求质数_PLSQL计算质数
  7. 计网(第五版)3-41
  8. 利用计算机的认识与感受制作海报,手绘pop海报在大学中的应用和现实意义
  9. 【二分】Caravan Robbers
  10. linux下使用ffmpeg将amr转成mp3(转)