~~557 2021-09-14 13:34 采纳率: 76.7%
浏览 133
已结题

多特征时间序列预测反归一化

因为是时间序列预测,所以不能随机划分训练集,数据归一化预测结束后,要怎么反归一化呢


import pandas as pd
import numpy as np
from sklearn import model_selection
from sklearn.linear_model import Lasso, LassoCV
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler

#读取数据
df = pd.read_csv(r'D:\PycharmProjects\projects2\fuel_data_3m.csv')
df['date'] = pd.to_datetime(df['date'])
df = df.set_index(['date'], drop=True)
#划分数据集
split_date = pd.Timestamp('2010-03-29 22:30:00')
train = df.loc[:split_date]
test = df.loc[split_date:]
#print(train)
#归一化
scaler = MinMaxScaler()
train_sc = scaler.fit_transform(train)
test_sc = scaler.transform(test)
train_sc = pd.DataFrame(data=train_sc, columns=['fuel', 'level1median', 'level2median', 'portPitch', 'portRudder', 'speedKnots',
         'starboardPitch', 'starboardRudder', 'trackDegreeMagnetic', 'trackDegreeTrue',
         'trim', 'trueHeading', 'WaterSpeed', 'windAngle', 'windSpeed'])
test_sc = pd.DataFrame(data=test_sc, columns=['fuel', 'level1median', 'level2median', 'portPitch', 'portRudder', 'speedKnots',
         'starboardPitch', 'starboardRudder', 'trackDegreeMagnetic', 'trackDegreeTrue',
         'trim', 'trueHeading', 'WaterSpeed', 'windAngle', 'windSpeed'])

feature_train = train_sc.columns[1:]
feature_test = test_sc.columns[1:]

X_train = train_sc[feature_train]
y_train = train_sc.fuel
X_test = test_sc[feature_test]
y_test = test_sc.fuel

#构造不同的lambda值
Lambdas = np.logspace(-8, -2, 200)
#设置交叉验证的参数,使用均方误差评估
lasso_cv = LassoCV(alphas=Lambdas, normalize=True, cv=10, max_iter=10000)
lasso_cv.fit(X_train, y_train)

#基于最佳lambda值建模
lasso = Lasso(alpha=lasso_cv.alpha_, normalize=True, max_iter=10000)
lasso.fit(X_train, y_train)
#打印回归系数
print('最优参数:', lasso_cv.alpha_)
print(pd.Series(index=['Intercept']+X_train.columns.tolist(),
                data=[lasso.intercept_]+lasso.coef_.tolist()))

#模型评估
lasso_pred = lasso.predict(X_test)
#反归一化
  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-09-15 11:58
    关注

    你好,直接利用你已经定义好的scaler归一化方法,就可以啦

    scaler.inverse_transform(lasso_pred)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 创建了问题 9月14日

悬赏问题

  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题