私は以下のフォーマットのデータセット(このリンクにはhttps://drive.google.com/open?id=0B2Iv8dfU4fTUY2ltNGVkMG05V00)があります。scikit-learn:二乗平均平方根誤差(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
私のデータセットの3番目の列(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
をパーセンテージで表示する方法はありますか?をPython
として使用してMAPE
を計算する方法はありますか?
なぜダウン投票ですか?私は私の質問を投稿する前にそれを見たが、私のためにうまくいっていない。 –
私に尋ねないでください、私はダウン投票していません!リンクされた答えがどう働いていないのか説明できますか?間違いはありますか? – Imran
私はいくつかの変更を行い、再実行してMAPEの値を '0.064'にしましたが、これがエラーか精度かはわかりません。 –