我們試圖在擬合模型以預測真值之後在同一圖上繪製預測值和真值,其中使用Python
中的RandomForestRegressor
three column dataset(點擊鏈接下載完整CSV
-dataset格式化爲以下Python:我們如何匹配迴歸模型的預測值和真值的值
t_stamp,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
0.041345,5,10
0.04135,6,10
0.041354,7,10
這裏是我們如何做的預測。
import pandas as pd
import numpy as np
import glob, os
from io import StringIO
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score
import math
from math import sqrt
from sklearn.cross_validation import train_test_split
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "data*.csv"))))
for i in range(1,10):
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(10)}).apply(np.nan_to_num, axis=0).values
y = df['Y'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.40)
reg = RandomForestRegressor(criterion='mse')
reg.fit(X_train,y_train)
modelPred_test = reg.predict(X_test)
print(modelPred_test)
爲了便於比較,我們希望在預測之前和預測之後生成一個圖。對於真值,我們與
fig, ax = plt.subplots()
ax.plot(df['time'].values, df['Y'].values)
我們希望繪製(在同一圖)地面實況(time
爲x軸和Y
爲y軸上的值嘗試過。當我們這樣做
ax.plot(df['time'].values, modelPred_test)
我們得到以下錯誤。
raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
這意味着我們有較少的預測值比我們有時間標記在我們的數據集。爲了驗證這一點,我做 print(df['time'].values.shape)
和print(modelPred_test.shape)
- 它分別輸出(258523,)
和(103410,)
。我們如何匹配哪些時間值對應於預測值,然後我可以使用我的繪圖命令的時間值的子集?
您可以將'np.arrage(df.shape [0])'傳遞給'train_test_split',並使用「test」部分作爲'df ['time']。values'的索引。 –