计算不同值范围的均方误差
Posted
技术标签:
【中文标题】计算不同值范围的均方误差【英文标题】:Calculate Mean Squared Error for different value-ranges 【发布时间】:2020-02-14 02:53:24 【问题描述】:我有一个 .csv,其中有很多值介于 -110 和 -50 之间。我想计算 10 范围内的均方误差([-110, -100], [-100, -90] 等)。主要目的是,最后我可以绘制不同范围的 MSE 值并查看行为。 要导入和读取 csv,我使用以下代码:
data = pd.read_csv('MY_Bahnhof_Bridge_DATASET.csv')
data_Measured = data['rsrp_measured']
data_Simulated = data['rsrp_simulated']
为了计算 MSE,我从 numpy 中使用了这个函数,但我不知道它是否支持像 pyplot 这样的范围:
MSE = np.square(np.subtract(data_Messung,data_Simulation)).mean()
或者我发现的另一个函数是:
from sklearn.metrics import mean_squared_error
MSE = mean_squared_error(data_Measured, data_Simulated)
有人知道一个舒适的解决方案吗?
提前致谢!
【问题讨论】:
【参考方案1】:要理解数据是什么并不容易。据我了解,您希望在每个宽度为 10 的 bin 中计算 rsrp_measured
和 rsrp_simulated
之间的差异的 MSE。您可以使用groupby
和apply
来实现,如下所示:
from sklearn.metrics import mean_squared_error
# Calculate differences
data["diff"] = data.eval('rsrp_measured - rsrp_simulated')
# Get bins of width 10
data["bin"] = data["diff"] // 10
# Get MSE per bin
data.groupby("bin").apply(lambda x:
mean_squared_error(x["rsrp_measured"], x["rsrp_simulated"]), axis=1)
【讨论】:
非常感谢您的回答!你是对的,我想计算每个宽度为 10 的箱内的 MSE,但不是为了差异。我想在 y 轴上绘制 MSE 值范围,在 x 轴上绘制 rsrp_measured 值范围的图。对于 x 轴上宽度为 10 的每个 bin,MSE 的值与 rsrp_simulatied 的相同范围相关。所以最后我有 5 - 6 个点告诉我,测量和模拟之间的 MSE 有多大取决于 rsrp_measured 的 bin。以上是关于计算不同值范围的均方误差的主要内容,如果未能解决你的问题,请参考以下文章