【发布时间】: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