【问题标题】:Create a data frame table for regression results为回归结果创建数据框表
【发布时间】:2021-08-13 00:48:20
【问题描述】:

我正在尝试创建一个函数来计算每个回归量的 R2 和 RMSE。

def apply_regressor_test(regressor, X_train, y_train, X_test, y_test, name):

r2= []
RMSE = []
reg_name = []

regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)



cor = r2_score(y_test, y_pred)

r = np.sqrt(mean_squared_error(y_test, y_pred)

r2.append(cor)
RMSE.append(r)
reg_name.append(name)

df = pd.DataFrame({'R2': r2, 'RMSE': RMSE}, index = reg_name)

return df

我希望能够获得一个表格,该表格将结合每个回归量的结果。我试图创建另一个数据框来附加函数的结果。我最终得到的是这个。

regressor = LinearRegression() 
df = apply_regressor_test(regressor, X_train_full_ss, y_train_full, X_test_ss, y_test, name = str(regressor))
df_results.append(df)
df_results

# This is what I get: 
 Out[306]:
 [                          R2      RMSE
  LinearRegression()  0.643291  1.344363,
                            R2      RMSE
  RandomForestRegressor()  0.761544  1.099167,
             R2      RMSE
  SVR()  0.706637  1.219165]

如何在只有一个列标题的表格中制作它?

谢谢

【问题讨论】:

  • 在我看来,您正在将数据框附加到数据框列表df_results
  • 顺便说一句。如果您将代码减少为基本部分,那将有很大帮助。问问自己:代码的哪一部分对于重现您的问题是真正必要的,哪些可以被虚拟代替。
  • 是的,我单独调用每个函数(不在 for 循环中)。我得到了 df 的结果,然后将其附加到 df_results。没有那个怎么办?
  • 将 df_results 定义为一个 Dataframe,其列与您的回归数据框和 append 相同。
  • 最简单的方法是探测。使用this function 将您的数据框列表连接成一个。在你的情况下,它只是pd.concat(df_results)

标签: python dataframe regression


【解决方案1】:

正如@Raphael 在评论中的回答。我能够通过将返回的 dfs 连接为来实现它,

pd.concat([df1, df2, df3], axis=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 2021-06-12
    • 2016-09-09
    • 2018-03-17
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多