提问人:PineNuts0 提问时间:12/21/2017 最后编辑:Mark LoymanPineNuts0 更新时间:7/18/2022 访问量:13767
Python 数据帧:在一列上使用 Groupby 计算 R^2 和 RMSE
Python Dataframe: Calculating R^2 and RMSE Using Groupby on One Column
问:
我有以下 Python 数据帧:
Type Actual Predicted
A 4 3
A 10 18
A 13 11
B 3 10
B 4 2
B 8 33
C 20 17
C 40 33
C 87 80
C 32 30
我有计算 R^2 和 RMSE 的代码,但我不知道如何通过不同的“类型”来计算它。
目前,我的方法是将较大的表分解为三个仅由 A、B、C 值组成的较小表,然后从每个较小的表中计算 R^2 和 RMSE......然后将它们重新加在一起。
但是上面的方法效率低下,我相信应该有更简单的方法吗?
以下是我希望在对事物进行分组时产生的结果的格式:
Type R^2 RMSE
A value value
B value value
C value value
答:
38赞
Tom
12/21/2017
#1
下面是一个方法:groupby
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score, mean_squared_error
def r2_rmse(g):
r2 = r2_score(g['Actual'], g['Predicted'])
rmse = np.sqrt(mean_squared_error(g['Actual'], g['Predicted']))
return pd.Series(dict(r2 = r2, rmse = rmse))
your_df.groupby('Type').apply(r2_rmse).reset_index()
评论
0赞
PineNuts0
12/21/2017
这太神奇了!谢谢。。。。关于如何在置信区间内执行此操作的任何提示?
2赞
Abhilash Awasthi
8/24/2020
return
语句可以修改为return pd.Series({'r2':r2, 'rmse':rmse})
评论