机器学习 r2_score 作用

参考文档

https://www.cnblogs.com/xiaohua92/p/5541080.html

前言:

      我们训练完模型后,对于连续型随机变量,我们会用

     loss = \sum_i(predY_i-trueY_i)^2/m 

    来评判模型训练的效果。这种有个缺点,比如

某轮随机抽样的样本trueY方差特别小,训练出来的loss也可能特别小。

但是这种基本没什么实用价值。

目录:

   一  r2_score  原理

   二  code 实现


一  r2_sore 原理

      score =1-\frac{u}{v}

       u= \sum_i (predY_i-trueY_i)^2

       v=m*\sum_{i=1}^{m}(trueY_i-mean(trueY))^2

               = var(trueY)*m  样本的方差*样本个数(这个在每轮训练的时候,是确定的)

       可以看到当v越小的时候,同样的u,score 越小。

二  code 实现

  

# -*- coding: utf-8 -*-
"""
Created on Thu Jul  8 14:32:40 2021

@author: chengxf2
"""
import numpy as np
import sklearn 
from sklearn.metrics import mean_squared_error , r2_score


'''
u: 实际值和预测值差异平方和
v: 样本方差*m[固定值]
'''
def Score():
    #内部实现
    y_true =np.array([4,4,4,5])
    y_pred =np.array([4,4,8,5])
    
    diff = np.power(y_true-y_pred,2)
    u = np.sum(diff)
    
   
    
    m = len(y_true)
    v = np.var(y_true)*m
   
    me_score = 1-u/v

    #直接调用API 实现   
    api_score = r2_score(y_true, y_pred)
    
    
    
    print("\t 调用API结果",api_score,"\t 自己实现结果",me_score)
    
Score()

      

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值