我们希望在使用RandomForestRegressor
作为数据科学讲座作业的一部分拟合模型后,在同一图表中绘制实际值和预测值。我们正在考虑的两个数据集可在以下链接中找到
https://drive.google.com/open?id=0B4Ajk8jbXM4TkdTeDQ
我们的解决方案和尝试绘制值如下所示
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "testdata*.csv"))))
#df = pd.read_csv('testdata1.csv')
for i in range(1,3):
df['X_t'+str(i)] = df['X'].shift(i)
print(df)
df.dropna(inplace=True)
X = df.drop('Y', axis=1)
modelPred_test = reg.predict(X_test)
ax.plot(pd.Series(index_values), y_test.values)
plotsInOne=pd.DataFrame(pd.concat([pd.Series(modelPred_test), pd.Series(y_test.values)], axis=1))
plt.figure(); plotsInOne.plot(); plt.legend(loc='best')
当我只选择一个数据集时
df = pd.read_csv('testdata1.csv')
并应用如上所示的绘图命令 - 它完全正常
但是,如果我将两个数据集合并为
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "testdata*.csv"))))
并应用绘图命令,它似乎不将数据集视为一个,并在单个绘图中生成两行,如下所示。我们在以下行中有两个线图的原因是因为plot命令正在处理this link中找到的testdata1.csv
和testdata2.csv
,即使它们被组合(连接或连接排序)使用df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "testdata*.csv"))))
。
我们如何解决这个问题?提前谢谢。
答案 0 :(得分:0)
只需连接然后对新数组进行排序,使其具有上升的x轴。 另一种方法是使用点来绘制而不是用线。
答案 1 :(得分:0)
为了实现这一点,我相信您必须设置ignore_index=True
,如下所示。
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "testdata*.csv"))),ignore_index=True)
希望这有帮助。