问题描述:归一化后使用模型进行预测,将预测的结果反归一化为初始的数据规模,预测值与真实值进行画图比较。
1、将特征和标注进行拆分,分别进行归一化
2、特征的归一化
1 from sklearn.preprocessing import MinMaxScaler # 导包 2 data.name = data.columns # 获取列名 3 for i in data.name: 4 data[i] = MinMaxScaler().fit_transform(data[i].values.reshape(-1, 1))
3、标注的归一化
1 from sklearn import preprocessing # 导包 2 3 scaler= preprocessing.MinMaxScaler(feature_range=(-1, 1)).fit(Y) # Y是标注 4 Y_scaled = scaler.transform(Y) # Y_scaled是归一化后的值,此时是 ndarray 类型的值。
4、拆分训练集和测试集
5、使用模型进行预测得到Y_pred
6、将Y_pred进行反归一化,恢复原始的数据规模
1 Y_ = scaler.inverse_transform(Y_pred.reshape(-1,1)) # 反归一化,此时是ndarray类型的值 2 Y_ = pd.DataFrame(Y_, columns=['A']) # 将ndarray转换为df形式,并设置列名
7、画图进行观察预测值和真实值的曲线
1 plt.figure() # 设置画板 2 # Y_true.index = [i for i in range(0, len(...))] # 重置下标,如果下标不一致可以使用这个句子进行调整 3 plt.plot(Y_true['A'], label='真实值') # 真实值绘图 4 plt.plot(Y_['A'], label='预测值') # 预测值绘图 5 plt.legend(bbox_to_anchor=(1.05, 0), loc=3, borderaxespad=0) # 设置图例,我一般将图例放置在右下角 6 plt.show() # 显示图像