gpt4 book ai didi

python - scikit-learn:如何以百分比计算均方根误差(RMSE)?

转载 作者:太空狗 更新时间:2023-10-30 02:39:09 24 4
gpt4 key购买 nike

我有以下格式的数据集(可在此链接中找到:https://drive.google.com/open?id=0B2Iv8dfU4fTUY2ltNGVkMG05V00)。

 time     X   Y
0.000543 0 10
0.000575 0 10
0.041324 1 10
0.041331 2 10
0.041336 3 10
0.04134 4 10
...
9.987735 55 239
9.987739 56 239
9.987744 57 239
9.987749 58 239
9.987938 59 239

我数据集中的第三列 (Y) 是我的真实值 - 这就是我想要预测(估计)的值。我想对 Y 进行预测(即根据 X 的前 100 个滚动值预测 Y 的当前值。为此,我有以下 python 脚本,使用 随机森林回归模型

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""

@author: deshag
"""

import pandas as pd
import numpy as np
from io import StringIO
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from math import sqrt



df = pd.read_csv('estimated_pred.csv')

for i in range(1,100):
df['X_t'+str(i)] = df['X'].shift(i)

print(df)

df.dropna(inplace=True)


X=pd.DataFrame({ 'X_%d'%i : df['X'].shift(i) for i in range(100)}).apply(np.nan_to_num, axis=0).values


y = df['Y'].values


reg = RandomForestRegressor(criterion='mse')
reg.fit(X,y)
modelPred = reg.predict(X)
print(modelPred)

print("Number of predictions:",len(modelPred))

meanSquaredError=mean_squared_error(y, modelPred)
print("MSE:", meanSquaredError)
rootMeanSquaredError = sqrt(meanSquaredError)
print("RMSE:", rootMeanSquaredError)

最后,我测量了均方根误差 (RMSE),得到的 RMSE19.57。从我从文档中读到的内容来看,它说平方误差与响应的单位相同。有没有办法以百分比表示 RMSE 的值?例如,说这个百分比的预测是正确的,而这个百分比是错误的。

sklearn 的最新版本中有一个用于计算平均绝对百分比误差 (MAPE)check_array 函数,但似乎没有当我按以下方式尝试时,它的工作方式与以前的版本相同。

import numpy as np
from sklearn.utils import check_array

def calculate_mape(y_true, y_pred):
y_true, y_pred = check_array(y_true, y_pred)

return np.mean(np.abs((y_true - y_pred) / y_true)) * 100

calculate_mape(y, modelPred)

这将返回一个错误:ValueError:没有足够的值来解压(预期 2,得到 1)。这似乎是最近版本中的 check_array 函数只返回一个 single value。 ,与之前的版本不同。

有什么方法可以用 Pythonsklearn 以百分比表示 RMSE 或计算 MAPE

最佳答案

您的 calculate_mape 实现不起作用,因为您需要 check_arrays 函数,该函数已在 sklearn 0.16 中删除。 check_array 不是您想要的。

This StackOverflow 答案给出了一个有效的实现。

关于python - scikit-learn:如何以百分比计算均方根误差(RMSE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com