numpy - 为什么两种计算 R2 分数的方法的结果不同
问题描述
在线性模型中,SST(总平方和)= SSR(剩余平方和)+ SSE(解释平方和),对吧?所以我用 2 种不同的方法计算了 R2 分数。
数据的形状是(n_sample,n_feature),我想计算每个特征的R2分数。
第一个:R2 = SSE/SST
def r2score(y_pred, y_true):
SSE = np.sum((y_pred - y_true.mean(axis=0)) ** 2, axis=0)
SST = np.sum((y_true - y_true.mean(axis=0)) ** 2, axis=0)
return SSE / SST
array([0.3903272 , 0.61556043, 0.79316815, 0.27477445, 0.76132449,
0.37335292, 0.67222515, 0.56178136, 0.37840461, 0.48753905,
0.48425204, 0.40274203, 0.32436666, 0.73934064, 0.67582176,
0.65503309, 0.74719551, 0.42158567, 0.35102711, 0.52308956,
0.22078698, 0.30651726, 0.28614789, 0.43199096])
第二:R2 = 1 - SSR/SST
def r2score_same(y_pred, y_true):
SSR = np.sum((y_true - y_pred) ** 2, axis=0)
SST = np.sum((y_true - y_true.mean(axis=0)) ** 2, axis=0)
return 1 - (SSR / SST)
array([0.43137207, 0.58980204, 0.75270556, 0.31230454, 0.80313592,
0.2881272 , 0.68314465, 0.61986317, 0.36847796, 0.456864 ,
0.35585449, 0.4385286 , 0.35472905, 0.66386517, 0.59598209,
0.65243417, 0.70413723, 0.42801639, 0.43712039, 0.56682037,
0.23902448, 0.34432634, 0.33884071, 0.42886742])
我不明白为什么结果不一样。
请帮我!
解决方案
推荐阅读
- php - 更改 WordPress 帖子 ID 长度
- encryption - 对称 AES 加密概念
- r - 类似交叉连接的操作(有例外)
- javascript - 扩展 OnClick 单个 div 并重新排列其余部分
- android - 如何以编程方式链接联系电话?
- java - Android Studio & Firebase 数据库问题
- python - 如何计算损失梯度以对 Keras 模型中的输入进行建模?
- sql-server-2012 - 根据条件更新随机行
- compiler-flags - CMake:禁止开发人员警告
- reactjs - 如何使用 react-create 命令创建扩展名为 .tsx 的反应组件