我们试图在拟合模型以预测真值之后在同一图上绘制预测值和真值,其中使用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'的索引。 –