我在尝试计算均方根对数误差时,发现了几种方法,其中一种是使用sklearn的度量标准:mean_squared_log_error,并取其平方根
np.sqrt(mean_squared_log_error( target, predicted_y ))
但我遇到了以下错误:
当目标值包含负值时,无法使用均方对数误差
我还尝试了来自Kaggle帖子的一个解决方案:
同样的问题,这次我得到了一个域错误。
在同一篇帖子中,他们针对负对数问题发表了以下评论:
你说的对。你必须转换y_pred和y_test,确保它们不包含负值。
在我预测天气温度(最初以摄氏度为单位)的情况下,解决方案是将它们转换为开氏度,然后计算RMSLE:
rmsle(data.temp_pred + 273.15, data.temp_real + 273.15)
有没有什么标准方法可以让这个度量标准支持负值?
回答:
将两个数组标准化到0到1的范围内
如果你使用scikit,可以使用sklearn.preprocessing.minmax_scale
:
minmax_scale(arr, feature_range=(0,1))
在执行此操作之前,请保存arr的最大值和最小值。你可以据此恢复实际值。
例如:
normalized = (value - arr.min()) / (arr.max() - arr.min()) # 示例