我对H2O如何计算R ^ 2感到困惑。我使用H2O的RandomForestEstimator创建了一个虚拟数据框:
df = pd.DataFrame({'x':[1,2,3,4,5],'y':[3,9,2,8,1]})
h2o_df=h2o.H2OFrame(df)
rf = H2ORandomForestEstimator()
rf.train('x','y',h2o_df)
rf.r2()
这会返回-0.667,这表示相当差!但我用预测方法计算了R ^ 2:
y_true = df.y
y_pred = rf.predict(h2o_df).as_data_frame().predict
SSE = sum((y_pred-y_true)**2)
SST = sum((y_true-y_true.mean())**2)
r2 = 1-(SSE/SST)
r2
这会返回0.727,这更有意义。 .r2()方法内部发生了什么?
答案 0 :(得分:1)
很确定这是一个错误。作为解决方法,rf.model_performance(h2o_df).r2()
返回R ^ 2的正确值(与手动计算时相同)。