python计算均方根误差_scikit学习:如何计算均方根误差(RMSE)的百分比?

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的当前值。为此,我使用random forest regression model编写了以下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),得到了RMSE的19.57。根据我从文档中读到的,它说平方误差的单位与响应的单位相同。有没有办法用百分比表示一个RMSE的值?例如,说这个百分比的预测是正确的,这是大错特错的。

在最新版本的sklearn中,有一个用于计算mean absolute percentage error (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: not enough values to unpack (expected 2, got 1)。这似乎是最新版本中的check_array函数只返回一个single value,与前一版本不同。

有没有办法用百分比来表示RMSE,或者用sklearn来计算Python?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值