计算具有一定范围的数据帧行的MSE,RMSE直到数据框架结束

发布于 2025-01-18 13:02:20 字数 657 浏览 1 评论 0原文

我有一个数据框架df,它具有两个列true预测,而数据框架有1000行。我想使用sklearn mean_squared_error(y_test,y_pred)的函数来计算MSE和RMSE。但是,我想以一种模式来计算它们,以便将第一个MSE在true预测列值的前20行中计算。然后,下一个MSE将从true预测列上的21-40行值上。因此,我想从总共1000行中连续每20行计算一堆MSE和RMSE,并将它们安排在数据框架中。我无法找到循环条件。我在范围(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

I have a data frame df which has two column True and Prediction while the data frame has 1000 rows. I want to calculate MSE and RMSE using function from sklearn mean_squared_error(y_test, y_pred) . But I want to keep calculating them in a pattern such that, the 1st MSE will be calculated on the first 20 rows of True and prediction column values. Then next MSE will be on 21-40 row values from the True and Prediction column. Thus I want to calculate a bunch of MSE and RMSE taking every 20 rows consecutively from the total 1000 rows and arranging them in a data frame. I am not being able to find loop condition for that. I tried for i in range(0,len(df),20) but its not working. How could I solve this?
For example, the data frame is

>df
    True  Prediction
0     5      5
1     6      4
2     7      2
3     2      3
..
1000  1      3

The output will be a data frame like this

   MSE   RMSE
0  1.5   2.5
1   1    0.5
2   1    1.2
...
50  2    3.7

As each MSE and RMSE will be based on 20 rows of True and Prediction value, there will be only 50 rows in the new data frame of MSE and RMSE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

口干舌燥 2025-01-25 13:02:20

这应该适用于 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)

请参阅此处的实时实施

This should work for 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)

See live implementation here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文