用一定范围的数据帧行计算MSE,RMSE,直到数据帧结束
Calculating MSE, RMSE with a certain range of data frame rows until the end of the data frame
我有一个数据框 df
,它有两列 True
和 Prediction
,而数据框有 1000 行。我想使用 sklearn mean_squared_error(y_test, y_pred)
中的函数计算 MSE 和 RMSE。但我想继续以这样的模式计算它们,即第一个 MSE 将在 True
和 prediction
列值的前 20 行上计算。然后下一个 MSE 将位于 True
和 Prediction
列的 21-40 行值上。因此,我想计算一堆 MSE 和 RMSE,从总共 1000 行中连续取每 20 行并将它们排列在一个数据框中。我无法为此找到循环条件。我试过 for i in range(0,len(df),20)
但它不起作用。我该如何解决这个问题?
比如数据框是
>df
True Prediction
0 5 5
1 6 4
2 7 2
3 2 3
..
1000 1 3
输出将是这样的数据框
MSE RMSE
0 1.5 2.5
1 1 0.5
2 1 1.2
...
50 2 3.7
由于每个MSE和RMSE将基于20行True和Prediction值,因此MSE和RMSE的新数据框将只有50行
这应该适用于 MSE:
mse = df.groupby(lambda i: int(i / 20)).agg({'True': lambda x: list(x), 'Prediction': lambda x: list(x)})
mse = mse.apply(lambda r: mean_squared_error(r['True'], r['Prediction']), axis=1)
mse.head(5)
查看实时实施 here
我有一个数据框 df
,它有两列 True
和 Prediction
,而数据框有 1000 行。我想使用 sklearn mean_squared_error(y_test, y_pred)
中的函数计算 MSE 和 RMSE。但我想继续以这样的模式计算它们,即第一个 MSE 将在 True
和 prediction
列值的前 20 行上计算。然后下一个 MSE 将位于 True
和 Prediction
列的 21-40 行值上。因此,我想计算一堆 MSE 和 RMSE,从总共 1000 行中连续取每 20 行并将它们排列在一个数据框中。我无法为此找到循环条件。我试过 for i in range(0,len(df),20)
但它不起作用。我该如何解决这个问题?
比如数据框是
>df
True Prediction
0 5 5
1 6 4
2 7 2
3 2 3
..
1000 1 3
输出将是这样的数据框
MSE RMSE
0 1.5 2.5
1 1 0.5
2 1 1.2
...
50 2 3.7
由于每个MSE和RMSE将基于20行True和Prediction值,因此MSE和RMSE的新数据框将只有50行
这应该适用于 MSE:
mse = df.groupby(lambda i: int(i / 20)).agg({'True': lambda x: list(x), 'Prediction': lambda x: list(x)})
mse = mse.apply(lambda r: mean_squared_error(r['True'], r['Prediction']), axis=1)
mse.head(5)
查看实时实施 here