Python Dataframe:在一列上使用 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 的代码,但我不知道如何通过不同的 "Type" 来计算它。
目前,我的方法是将较大的 table 分成三个较小的 table,仅由 A、B、C 值组成,然后计算每个较小的 [=] 的 R^2 和 RMSE 25=]...然后将它们重新组合在一起。
但是上面的方法效率低下,我想应该有更简单的方法吧?
以下是分组时我希望结果产生的格式:
Type R^2 RMSE
A value value
B value value
C value value
这是一个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()
我有以下 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 的代码,但我不知道如何通过不同的 "Type" 来计算它。
目前,我的方法是将较大的 table 分成三个较小的 table,仅由 A、B、C 值组成,然后计算每个较小的 [=] 的 R^2 和 RMSE 25=]...然后将它们重新组合在一起。
但是上面的方法效率低下,我想应该有更简单的方法吧?
以下是分组时我希望结果产生的格式:
Type R^2 RMSE
A value value
B value value
C value value
这是一个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()