最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

人工智能學(xué)習(xí)文件qoiqwetoiu

2023-06-30 15:05 作者:我需要重新集結(jié)部隊嗎  | 我要投稿

#!/usr/bin/env python

# coding: utf-8


# #? 導(dǎo)入數(shù)據(jù)分析和建模所需要的庫


# In[1]:



import pandas as pd

from pandas import Series,DataFrame

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sn

import random

import time

from datetime import datetime

import cufflinks as cf

cf.go_offline()

import plotly

print(plotly.__version__) # requires version >= 1.9.0

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

import plotly.express as px

import plotly.graph_objects as go


# for the ML pipeline

from sklearn.model_selection import train_test_split

from sklearn.impute? import SimpleImputer

from sklearn.preprocessing import OrdinalEncoder

from sklearn.feature_selection import SelectFromModel

import sklearn.datasets as datasets

from sklearn import preprocessing

le = preprocessing.LabelEncoder()

#導(dǎo)入機器學(xué)習(xí)算法模型

from sklearn.neighbors import KNeighborsRegressor

from sklearn.linear_model import LinearRegression

from sklearn.linear_model import Ridge

from sklearn.linear_model import HuberRegressor

from sklearn.tree import DecisionTreeRegressor

from sklearn.svm import SVR


from sklearn.linear_model import Lasso

from sklearn.neural_network import MLPRegressor

from sklearn.tree import ExtraTreeRegressor

from xgboost import XGBRegressor

from sklearn.ensemble import RandomForestRegressor

from sklearn.ensemble import AdaBoostRegressor

from sklearn.ensemble import GradientBoostingRegressor

from sklearn.ensemble import BaggingRegressor

import lightgbm as lgb

import xgboost as xgb

from xgboost import plot_importance, plot_tree

from statsmodels.tools.eval_measures import mse,rmse

from sklearn.model_selection import GridSearchCV

from xgboost import XGBRegressor

import warnings

import pickle


#切割訓(xùn)練數(shù)據(jù)和樣本數(shù)據(jù)

from sklearn.model_selection import train_test_split


#用于模型評分

from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error

from sklearn.metrics import explained_variance_score, median_absolute_error


random.seed(100)


get_ipython().run_line_magic('matplotlib', 'inline')


# from statsmodels.tsa.arima.model import ARIMA

# import statsmodels.api as sm

# from statsmodels.tsa.statespace.sarimax import SARIMAX


# import keras

# import tensorflow as tf

# from keras.preprocessing.sequence import TimeseriesGenerator

# from keras.models import Sequential

# from keras.layers import LSTM, Dense



# # 導(dǎo)入并處理數(shù)據(jù)


# In[2]:



pd.set_option('display.max_rows',100)??

pd.set_option('display.max_columns',100)?


#Import the data and parse dates.

df_test = pd.read_csv('data/液化氣_日度價格預(yù)測數(shù)據(jù)20211026.csv')

df_test['Date']=pd.to_datetime(df_test['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

#df_test.tail(50)



# In[4]:



#df_test.tail(50)



# # 缺失值處理


# In[3]:



# 特征工程函數(shù)

# 增加差分列

def create_diff_features(df, columns=[], ignore=[], ignore_first=True):

? ? if len(columns)==0:

? ? ? ? columns = df.columns

? ? if ignore_first:

? ? ? ? ignore.append(df.columns[0])

? ? for col in columns:

? ? ? ? if col not in ignore:

? ? ? ? ? ? try:

? ? ? ? ? ? ? ? df[col+"_d"] = df[col].diff()

? ? ? ? ? ? except:

? ? ? ? ? ? ? ? pass

? ? return df


# 與目標(biāo)值之差

def create_target_minus(df, target="", columns=[]):

? ? if target=="":

? ? ? ? target = df.columns[0]

? ? if len(columns)==0:

? ? ? ? columns = df.columns

? ? for col in columns:

? ? ? ? if col != target:

? ? ? ? ? ? try:

? ? ? ? ? ? ? ? df[col+"_m"] = df[col]-df[target]

? ? ? ? ? ? except: pass

? ? return df


# 與目標(biāo)值之積

def create_target_divide(df, target="", columns=[]):

? ? if target=="":

? ? ? ? target = df.columns[0]

? ? if len(columns)!=0:

? ? ? ? columns = df.columns

? ? for col in columns:

? ? ? ? if col != target:

? ? ? ? ? ? try:

? ? ? ? ? ? ? ? df[col+"_t"] = df[col]/df[target]

? ? ? ? ? ? except: pass

? ? return df


# 增加日期列

def create_date_features(series):

? ? #serie = series.transpose()

? ? df_products = series

? ? df_products["Date"] = pd.to_datetime(df_products["Date"])

? ? df_products["quarter"] = df_products["Date"].dt.quarter.astype("uint8")

? ? df_products["Month"] = df_products["Date"].dt.month.astype("uint8")

? ? df_products["dayofyear"] = df_products["Date"].dt.dayofyear.astype("uint8")

? ? df_products["dayofmonth"] = df_products["Date"].dt.day.astype("uint8")

? ? df_products["dayofweek"] = df_products["Date"].dt.dayofweek.astype("uint8")

? ? df_products.index = df_products.Date

? ? df_products = df_products.drop(["Date"], axis= 1)


? ? #df_products["T-1"] = np.append(df_products.Price.values[0],df_products.Price.values[:-1])

? ? #df_products["T-7"] = np.append([df_products.Price.values[0] for _ in range(7)],df_products.Price.values[:-7])

? ??

? ? #Cheat

? ? #df_products["P-1"] = df_products.Price.values

? ? #df_products["P-2"] = df_products.Price.diff().values

? ??

? ? return df_products



# In[4]:



# 根據(jù)需要預(yù)測的日期(這里是2021-09-06)調(diào)整日期,此處預(yù)測9月6號日度價格

#df_test=df_test[(df_test['Date']<='2021-09-16')]


#查看每個特征缺失值

MisVal_Check=df_test.isnull().sum().sort_values(ascending=False)

#print(MisVal_Check.head(39))


#查看每個特征缺失值的百分比

df_MisVal_Check = pd.DataFrame(MisVal_Check,)#

df_MisVal_Check_1=df_MisVal_Check.reset_index()

df_MisVal_Check_1.columns=['Variable_Name','Missing_Number']?

df_MisVal_Check_1['Missing_Number']=df_MisVal_Check_1['Missing_Number']/len(df_test)


#去掉缺失值百分比>threshold的特征

threshold = 0.5

#Dropping columns with missing value rate higher than threshold

df_test_1 = df_test[df_test.columns[df_test.isnull().mean() < threshold]]

#df_test_1=df_test.drop(df_MisVal_Check_1[df_MisVal_Check_1['Missing_Number']>0.4].Variable_Name,axis = 1)


#補充缺失值:將缺失值補為前一個或者后一個數(shù)值

df_test_1=df_test_1.fillna(df_test.ffill())

df_test_1=df_test_1.fillna(df_test_1.bfill())

#df_test_1['year']=df_test_1['Date'].dt.year.astype("str")


#特征工程:

df_test_2 = df_test_1.copy()

cols = df_test_1.columns.values

# 自差分

#df_test_2=create_diff_features(df_test_2, columns=cols, ignore=["Price","Date"])

# 與目標(biāo)值之差

#df_test_2=create_target_minus(df_test_2, target="Price", columns=cols)

# 日期

df_test_2=create_date_features(df_test_2)


df_test_3=df_test_2.drop(['year','星期幾'],axis=1, errors='ignore')

#df_test_3=df_test_2.drop(['year','星期幾','節(jié)假日','調(diào)休上班','突發(fā)事件'],axis=1, errors='ignore')


#---------------------------------------------------

#將節(jié)假日和調(diào)休兩列從文字格式轉(zhuǎn)化為分類格式

le.fit(df_test_3['節(jié)假日'])

df_test_3['節(jié)假日']=le.transform(df_test_3['節(jié)假日'])


#------------------------------------------------------

le.fit(df_test_3['調(diào)休上班'])

df_test_3['調(diào)休上班']=le.transform(df_test_3['調(diào)休上班'])

#------------------------------------------------------

#------------------------------------------------------

le.fit(df_test_3['突發(fā)事件'])

df_test_3['突發(fā)事件']=le.transform(df_test_3['突發(fā)事件'])

#------------------------------------------------------



# In[251]:



#cols



# In[83]:



#df_test_3



# In[190]:



#add_d_columns(df_test_3)



# In[ ]:






# # 建模&預(yù)測


# In[6]:



#定義plot_feature_importance函數(shù),該函數(shù)用于計算特征重要性。此部分代碼無需調(diào)整

def plot_feature_importance(importance,names,model_type):

? ? feature_importance = np.array(importance)

? ? feature_names = np.array(names)

? ??

? ? data={'feature_names':feature_names,'feature_importance':feature_importance}

? ? fi_df = pd.DataFrame(data)

? ??

? ? fi_df.sort_values(by=['feature_importance'], ascending=False,inplace=True)

? ??

? ? plt.figure(figsize=(10,8))

? ? sn.barplot(x=fi_df['feature_importance'], y=fi_df['feature_names'])

? ??

? ? plt.title(model_type + " "+'FEATURE IMPORTANCE')

? ? plt.xlabel('FEATURE IMPORTANCE')

? ? plt.ylabel('FEATURE NAMES')

? ? plt.show()

? ??

plt.rcParams['font.sans-serif'] = [u'SimHei']

plt.rcParams['axes.unicode_minus'] = False


# 效果展示函數(shù)


# 訓(xùn)練效果展示

def visualize_loss(history, title):

? ? loss = history.history["loss"]

? ? val_loss = history.history["val_loss"]

? ? epochs = range(len(loss))

? ? plt.figure()

? ? plt.plot(epochs, loss, "b", label="Training loss")

? ? plt.plot(epochs, val_loss, "r", label="Validation loss")

? ? plt.title(title)

? ? plt.xlabel("Epochs")

? ? plt.ylabel("Loss")

? ? plt.legend()

? ? plt.show()

? ??

# 畫預(yù)測效果刺猬圖:labels第一個是真實列,后面是預(yù)測列

def plot_prediction(df_results, labels, time_label="Date", draw_spike=True, draw_point=True, draw_line=False):

? ? plt.rcParams["figure.figsize"] = (10,6)

? ? #colors = ['crimson', 'coral', 'orange', 'red', 'lightcoral', 'gold']

? ? colors = ['red','gold','blue','purple','orange','green','violet']

? ? try:

? ? ? ? time_steps = df_results[time_label]

? ? except:

? ? ? ? time_steps = df_results.index

? ? ? ??

? ? #顯示真實值

? ? plt.plot(time_steps, df_results[labels[0]], color="grey", alpha=0.5, label=labels[0])

? ??

? ? #顯示預(yù)測值

? ? if draw_spike:

? ? ? ? true_val = df_results[labels[0]].values

? ? ? ? for i, val in enumerate(labels[1:]):

? ? ? ? ? ? pred = df_results[val].values

? ? ? ? ? ? plt.plot(time_steps[:2], [true_val[0],pred[1]], color=colors[i], alpha=0.5, label=labels[i+1])

? ? ? ? ? ? for j in range(1,df_results.shape[0]-1):

? ? ? ? ? ? ? ? plt.plot(time_steps[j:j+2], [true_val[j],pred[j+1]], color=colors[i], alpha=0.5)


? ? #顯示預(yù)測點圖? ? ?

? ? if draw_point:

? ? ? ? plt.scatter(time_steps, df_results[labels[0]], color="grey", alpha=0.5, s=5)

? ? ? ? for i, val in enumerate(labels[1:]):

? ? ? ? ? ? pred = df_results[val]

? ? ? ? ? ? plt.scatter(time_steps, pred, color=colors[i], alpha=0.5, s=5)

? ? ? ??

? ? #顯示預(yù)測線圖? ? ?

? ? if draw_line:

? ? ? ? for i, val in enumerate(labels[1:]):

? ? ? ? ? ? pred = df_results[val]

? ? ? ? ? ? plt.plot(time_steps, pred, color=colors[i], alpha=0.5)


? ? plt.legend()

? ? plt.xlim([time_steps[0], time_steps[-1:]])

? ? plt.xlabel("時間軸")

? ? plt.show()



# In[7]:



df_product=df_test_3.iloc[:,:].copy()

#df_product.iloc[:,0] = df_product.iloc[:,0].diff()


X_train=df_product.iloc[1:-14,1:]

y_train=df_product.iloc[1:-14,0]

? ??

X_test=df_product.iloc[-15:,1:]

y_test=df_product.iloc[-15:,0]



# In[86]:



#X_train



# In[8]:



warnings.filterwarnings("ignore")


# Grid search for best parameters

estimator = XGBRegressor(random_state=0,

?#objective='reg:linear',

nthread=4,

seed=42

)


# Round 4 get best parameters?

parameters =? {

? ? ? ? ? ? ? 'max_depth': [10],

? ? ? ? ? ? ? 'learning_rate': [ 0.4],

? ? ? ? ? ? ? 'min_split_loss':[0,1],

? ? ? ? ? ? ? 'n_estimators': [15],

? ? ? ? ? ? ? 'min_child_weight': [6,7,8],

? ? ? ? ? ? ? 'max_delta_step': [0],

? ? ? ? ? ? ? 'subsample': [0.6,0.7,0.8],

? ? ? ? ? ? ? 'colsample_bytree': [1.0],

? ? ? ? ? ? ? 'reg_alpha':[0,0.2],

? ? ? ? ? ? ? 'reg_lambda': [0,0.05],

? ? ? ? ? ? ? 'scale_pos_weight': [0.05,0.1,]


}


? ? #################? ??


grid_search = GridSearchCV(

? ? ? ? ? ? ? estimator=estimator,

? ? ? ? ? ? ? param_grid=parameters,

? ? #scoring = 'roc_auc',

? ? #n_jobs = 10,

? ? cv = 3,

? ? verbose=True

? ? )

? ??

warnings.filterwarnings("ignore")

? ??

grid_search.fit(X_train, y_train)

? ??


###############################################################################


estimator_GBR = GradientBoostingRegressor(criterion='mse',random_state=0,)


parameters_GBR = {

? ? ? ? ? ? ?'n_estimators':[99,100,101],?

? ? ? ? ? ? 'learning_rate': [0.1,0.2],?

? ? ? ? ? ? 'max_depth':[6,7,8],?

? ? ? ? ? ? 'min_samples_leaf':[1,2,3,4],?

? ? ? ? ? ? 'max_features':[5,6,7]

? ? ? ? ? ??


}



grid_search_GBR = GridSearchCV(

? ? ? ? estimator=estimator_GBR,

? ? ? ? param_grid=parameters_GBR,

? ? ? ? #scoring = 'roc_auc',

? ? ? ? #n_jobs = 10,

? ? ? ? cv = 3,

? ? ? ? verbose=True

? ? )


grid_search_GBR.fit(X_train, y_train)

? ??


###############################################################################

estimator_RF = RandomForestRegressor(criterion='mse',random_state=0)


parameters_RF = {

? ? ? ? ? ? 'bootstrap': [False],

? ? ? ? ? ? ?'max_depth': [10,None],

? ? ? ? ? ? ?'max_features': ['sqrt'],

? ? ? ? ? ? ?'min_samples_leaf': [1],

? ? ? ? ? ? ?'min_samples_split': [2],

? ? ? ? ? ? ?'n_estimators':[94,100] #range(5,110,1)#[9,10,11],


}



grid_search_RF = GridSearchCV(

? ? ? ? estimator=estimator_RF,

? ? ? ? param_grid=parameters_RF,

? ? ? ? #scoring = 'roc_auc',

? ? ? ? #n_jobs = 10,

? ? ? ? cv = 15,

? ? ? ? verbose=True

? ? )


grid_search_RF.fit(X_train, y_train)


###############################################################################

estimator_BaggingR = BaggingRegressor(random_state=0,)


n_samples = X_train.shape[0]

n_features = X_train.shape[1]


parameters_BaggingR = {

? ? ? ? ? ?

? ? ? ? ? 'n_estimators': [ 101,102,103],

? ? ? ? ? 'max_samples': [1.0,],

? ? ? ? ? 'max_features': [0.4,1.0],

? ? ? ? ? 'bootstrap': [ False],

? ? ? ? ? 'bootstrap_features': [True]


}



grid_search_BaggingR = GridSearchCV(

? ? ? ? estimator=estimator_BaggingR,

? ? ? ? param_grid=parameters_BaggingR,

? ? ? ? #scoring = 'roc_auc',

? ? ? ?# n_jobs = 10,

? ? ? ? cv = 22,

? ? ? ? verbose=True

? ? )


grid_search_BaggingR.fit(X_train, y_train)



# In[9]:



future_days_test=X_train.copy() #createFeatures(future_days)

? ? ? ? ? ? ? ? ? ? ??

future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_train)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_train)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_train)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_train)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + \

future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15



# In[10]:



print("XGB")

print("Best score: %.3f" % grid_search.best_score_)

print("Best parameters set:")

best_parameters = grid_search.best_estimator_.get_params()

for param_name in parameters.keys():

? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

plot_feature_importance(grid_search.best_estimator_.feature_importances_, X_train.columns,'XGB')


print("GBR")

print("Best score: %.3f" % grid_search_GBR.best_score_)

print("Best parameters set:")

best_parameters = grid_search_GBR.best_estimator_.get_params()

for param_name in parameters_GBR.keys():

? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

plot_feature_importance(grid_search_GBR.best_estimator_.feature_importances_, X_train.columns,'GBR')


print("RF")

print("Best score: %.3f" % grid_search_RF.best_score_)

print("Best parameters set:")

best_parameters = grid_search_RF.best_estimator_.get_params()

for param_name in parameters_RF.keys():

? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

plot_feature_importance(grid_search_RF.best_estimator_.feature_importances_, X_train.columns,'RF')


print("BAGG")

print("Best score: %.3f" % grid_search_BaggingR.best_score_)

print("Best parameters set:")

best_parameters = grid_search_BaggingR.best_estimator_.get_params()

for param_name in sorted(parameters_BaggingR.keys()):

? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

#plot_feature_importance(grid_search_BaggingR.best_estimator_.feature_importances_, X_train.columns,'BAGG')



# In[12]:



future_days_test=X_train.copy() #createFeatures(future_days)

? ? ? ? ? ? ? ? ? ? ??

future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_train)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_train)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_train)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_train)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

#future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']



future_days_test["Price"] = y_train


future_days_test = future_days_test[-100:]

plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("XGB_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

print("GBR_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

print("RF_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

print("BaggingR_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

print("融合模型誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))



future_days_test=X_test.copy() #createFeatures(future_days)


future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_test)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_test)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_test)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_test)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

#future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']


future_days_test["Price"] = y_test

df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

df_h_h=df_h_h.set_index('Date')

future_days_test["highest"] = df_h_h.競拍最高價


plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("XGB_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

print("GBR_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

print("RF_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

print("BaggingR_PREDICTIONS 誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

print("融合模型誤差: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))



# In[ ]:






# In[66]:



future_days_test=X_train.copy() #createFeatures(future_days)

? ? ? ? ? ? ? ? ? ? ??

future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_train)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_train)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_train)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_train)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

#future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']



future_days_test["Price"] = y_train


future_days_test = future_days_test[-100:]

plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))



future_days_test=X_test.copy() #createFeatures(future_days)


future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_test)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_test)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_test)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_test)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

#future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']


future_days_test["Price"] = y_test

df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

df_h_h=df_h_h.set_index('Date')

future_days_test["highest"] = df_h_h.競拍最高價


plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))



# In[23]:



X_val=df_product.iloc[-10:,1:]

y_val=df_product.iloc[-10:,0]??


future_days_test=X_val.copy() #createFeatures(future_days)


future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_val)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_val)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_val)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_val)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

#future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']



future_days_test["Price"] = y_val

df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

df_h_h=df_h_h.set_index('Date')

#future_days_test["highest"] = df_h_h.競拍最高價

future_days_test["prev_pred"] = df_h_h.歷史預(yù)測起拍價.diff()


plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS","prev_pred"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

#print("LSTM error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))


print("current error: ", np.sqrt(mean_squared_error(future_days_test.Price[-10:1],future_days_test.prev_pred[-10:1])))



# In[20]:



future_days_test.prev_pred[-10:]



# In[24]:



future_days_test



# In[ ]:






# In[ ]:






# In[56]:



#復(fù)盤算法,觀察預(yù)測穩(wěn)定性


def run_last_n_days(n):

? ? l = df_test_3.shape[0]

? ? for i in range(1,n+1):

? ? ? ? print("last n days: ",i)


? ? ? ? df_product=df_test_3.iloc[:,:].copy()

? ? ? ? #df_product.iloc[:,0] = df_product.iloc[:,0].diff()


? ? ? ? X_train=df_product.iloc[1:-n,1:]

? ? ? ? y_train=df_product.iloc[1:-n,0]


? ? ? ? X_test=df_product.iloc[-14-n:l-n+1,1:]

? ? ? ? y_test=df_product.iloc[-14-n:l-n+1,0]


? ? ? ? X_val=df_product.iloc[-30:,1:]

? ? ? ? y_val=df_product.iloc[-30:,0]



? ? ? ? estimator = XGBRegressor(random_state=0,

? ? ? ? ?#objective='reg:linear',

? ? ? ? nthread=4,

? ? ? ? seed=42

? ? ? ? )


? ? ? ? # Round 4 get best parameters?

? ? ? ? parameters =? {

? ? ? ? ? ? ? ? ? ? ? 'max_depth': [10],

? ? ? ? ? ? ? ? ? ? ? 'learning_rate': [ 0.4],

? ? ? ? ? ? ? ? ? ? ? 'min_split_loss':[0,1],

? ? ? ? ? ? ? ? ? ? ? 'n_estimators': [15],

? ? ? ? ? ? ? ? ? ? ? 'min_child_weight': [6,7,8],

? ? ? ? ? ? ? ? ? ? ? 'max_delta_step': [0],

? ? ? ? ? ? ? ? ? ? ? 'subsample': [0.6,0.7,0.8],

? ? ? ? ? ? ? ? ? ? ? 'colsample_bytree': [1.0],

? ? ? ? ? ? ? ? ? ? ? 'reg_alpha':[0,0.2],

? ? ? ? ? ? ? ? ? ? ? 'reg_lambda': [0,0.05],

? ? ? ? ? ? ? ? ? ? ? 'scale_pos_weight': [0.05,0.1,]


? ? ? ? }


? ? ? ? ? ? #################? ??


? ? ? ? grid_search = GridSearchCV(

? ? ? ? ? ? ? ? ? ? ? estimator=estimator,

? ? ? ? ? ? ? ? ? ? ? param_grid=parameters,

? ? ? ? ? ? #scoring = 'roc_auc',

? ? ? ? ? ? #n_jobs = 10,

? ? ? ? ? ? cv = 3,

? ? ? ? ? ? verbose=0

? ? ? ? ? ? )


? ? ? ? warnings.filterwarnings("ignore")


? ? ? ? grid_search.fit(X_train, y_train)



? ? ? ? ###############################################################################


? ? ? ? estimator_GBR = GradientBoostingRegressor(criterion='mse',random_state=0,)


? ? ? ? parameters_GBR = {

? ? ? ? ? ? ? ? ? ? ?'n_estimators':range (99, 102,1),?

? ? ? ? ? ? ? ? ? ? 'learning_rate': [0.1,0.2],?

? ? ? ? ? ? ? ? ? ? 'max_depth':[6,7,8,],?

? ? ? ? ? ? ? ? ? ? 'min_samples_leaf':[1,2,3,4],?

? ? ? ? ? ? ? ? ? ? 'max_features':[5,6,7]

? ? ? ? }


? ? ? ? grid_search_GBR = GridSearchCV(

? ? ? ? ? ? ? ? estimator=estimator_GBR,

? ? ? ? ? ? ? ? param_grid=parameters_GBR,

? ? ? ? ? ? ? ? #scoring = 'roc_auc',

? ? ? ? ? ? ? ? #n_jobs = 10,

? ? ? ? ? ? ? ? cv = 3,

? ? ? ? ? ? ? ? verbose=0

? ? ? ? ? ? )


? ? ? ? grid_search_GBR.fit(X_train, y_train)



? ? ? ? ###############################################################################

? ? ? ? estimator_RF = RandomForestRegressor(criterion='mse',random_state=0)


? ? ? ? parameters_RF = {

? ? ? ? ? ? ? ? ? ? 'bootstrap': [False],

? ? ? ? ? ? ? ? ? ? ?'max_depth': [10,None],

? ? ? ? ? ? ? ? ? ? ?'max_features': ['sqrt'],

? ? ? ? ? ? ? ? ? ? ?'min_samples_leaf': [1],

? ? ? ? ? ? ? ? ? ? ?'min_samples_split': [2],

? ? ? ? ? ? ? ? ? ? ?'n_estimators':[94,100] #range(5,110,1)#[9,10,11],

? ? ? ? }



? ? ? ? grid_search_RF = GridSearchCV(

? ? ? ? ? ? ? ? estimator=estimator_RF,

? ? ? ? ? ? ? ? param_grid=parameters_RF,

? ? ? ? ? ? ? ? #scoring = 'roc_auc',

? ? ? ? ? ? ? ? #n_jobs = 10,

? ? ? ? ? ? ? ? cv = 15,

? ? ? ? ? ? ? ? verbose=0

? ? ? ? ? ? )


? ? ? ? grid_search_RF.fit(X_train, y_train)


? ? ? ? ###############################################################################

? ? ? ? estimator_BaggingR = BaggingRegressor(random_state=0,)


? ? ? ? n_samples = X_train.shape[0]

? ? ? ? n_features = X_train.shape[1]


? ? ? ? parameters_BaggingR = {


? ? ? ? ? ? ? ? ? 'n_estimators': [ 101,102,103],

? ? ? ? ? ? ? ? ? 'max_samples': [1.0,],

? ? ? ? ? ? ? ? ? 'max_features': [0.4,1.0],

? ? ? ? ? ? ? ? ? 'bootstrap': [ False],

? ? ? ? ? ? ? ? ? 'bootstrap_features': [True]


? ? ? ? }



? ? ? ? grid_search_BaggingR = GridSearchCV(

? ? ? ? ? ? ? ? estimator=estimator_BaggingR,

? ? ? ? ? ? ? ? param_grid=parameters_BaggingR,

? ? ? ? ? ? ? ? #scoring = 'roc_auc',

? ? ? ? ? ? ? ?# n_jobs = 10,

? ? ? ? ? ? ? ? cv = 22,

? ? ? ? ? ? ? ? verbose=0

? ? ? ? ? ? )

? ? ? ? grid_search_BaggingR.fit(X_train, y_train)


? ? ? ??

? ? ? ??

? ? ? ? print("params used:")

? ? ? ? print("XGB")

? ? ? ? print("Best score: %.3f" % grid_search.best_score_)

? ? ? ? print("Best parameters set:")

? ? ? ? best_parameters = grid_search.best_estimator_.get_params()

? ? ? ? for param_name in parameters.keys():

? ? ? ? ? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

? ? ? ? #plot_feature_importance(grid_search.best_estimator_.feature_importances_, X_train.columns,'XGB')


? ? ? ? print("GBR")

? ? ? ? print("Best score: %.3f" % grid_search_GBR.best_score_)

? ? ? ? print("Best parameters set:")

? ? ? ? best_parameters = grid_search_GBR.best_estimator_.get_params()

? ? ? ? for param_name in parameters_GBR.keys():

? ? ? ? ? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

? ? ? ? #plot_feature_importance(grid_search_GBR.best_estimator_.feature_importances_, X_train.columns,'GBR')


? ? ? ? print("RF")

? ? ? ? print("Best score: %.3f" % grid_search_RF.best_score_)

? ? ? ? print("Best parameters set:")

? ? ? ? best_parameters = grid_search_RF.best_estimator_.get_params()

? ? ? ? for param_name in parameters_RF.keys():

? ? ? ? ? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))

? ? ? ? #plot_feature_importance(grid_search_RF.best_estimator_.feature_importances_, X_train.columns,'RF')


? ? ? ? print("BAGG")

? ? ? ? print("Best score: %.3f" % grid_search_BaggingR.best_score_)

? ? ? ? print("Best parameters set:")

? ? ? ? best_parameters = grid_search_BaggingR.best_estimator_.get_params()

? ? ? ? for param_name in sorted(parameters_BaggingR.keys()):

? ? ? ? ? ? print("\t%s: %r" % (param_name, best_parameters[param_name]))


? ? ? ??



? ? ? ? print("show traing err")

? ? ? ? future_days_test=X_train.copy() #createFeatures(future_days)


? ? ? ? future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_train)

? ? ? ? future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_train)? ??

? ? ? ? future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_train)?

? ? ? ? future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_train)

? ? ? ? future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15


? ? ? ? future_days_test["Price"] = y_train


? ? ? ? future_days_test = future_days_test[-100:]

? ? ? ? plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


? ? ? ? print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

? ? ? ? print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

? ? ? ? print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

? ? ? ? print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

? ? ? ? print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

? ? ? ? print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))

? ? ? ? print("Trival error2: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Price*0)))




? ? ? ? print("show testing err")

? ? ? ? future_days_test=X_test.copy() #createFeatures(future_days)


? ? ? ? future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_test)

? ? ? ? future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_test)? ??

? ? ? ? future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_test)?

? ? ? ? future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_test)

? ? ? ? future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15

? ? ? ? #future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['XGB_PREDICTIONS']


? ? ? ? future_days_test["Price"] = y_test

? ? ? ? df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

? ? ? ? df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

? ? ? ? df_h_h=df_h_h.set_index('Date')

? ? ? ? future_days_test["highest"] = df_h_h.競拍最高價


? ? ? ? plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


? ? ? ? print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

? ? ? ? print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

? ? ? ? print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

? ? ? ? print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

? ? ? ? print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

? ? ? ? print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))

? ? ? ? print("Trival error2: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Price*0)))




? ? ? ? print("show validation err")

? ? ? ? future_days_test=X_val.copy() #createFeatures(future_days)


? ? ? ? future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_val)

? ? ? ? future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_val)? ??

? ? ? ? future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_val)?

? ? ? ? future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_val)

? ? ? ? future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15


? ? ? ? future_days_test["Price"] = y_val


? ? ? ? #future_days_test = future_days_test[-100:]

? ? ? ? plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


? ? ? ? print("XGB_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.XGB_PREDICTIONS)))

? ? ? ? print("GBR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.GBR_PREDICTIONS)))

? ? ? ? print("RF_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.RF_PREDICTIONS)))

? ? ? ? print("BaggingR_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.BaggingR_PREDICTIONS)))

? ? ? ? print("Stacking_Model_PREDICTIONS error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

? ? ? ? print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))

? ? ? ? print("Trival error2: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Price*0)))


? ? ? ? print("last 14 days:")

? ? ? ? print("XGB_PREDICTIONS: ", future_days_test.XGB_PREDICTIONS.values[-14:])

? ? ? ? print("GBR_PREDICTIONS: ", future_days_test.GBR_PREDICTIONS.values[-14:])

? ? ? ? print("RF_PREDICTIONS: ", future_days_test.RF_PREDICTIONS.values[-14:])

? ? ? ? print("BaggingR_PREDICTIONS: ", future_days_test.BaggingR_PREDICTIONS.values[-14:])

? ? ? ? print("Stacking_Model_PREDICTIONS: ", future_days_test.Stacking_Model_PREDICTIONS.values[-14:])

? ? ? ??

? ? ? ? print("")

? ? ? ? print("")

? ? ? ? print("")

? ? ? ? print("")



# In[57]:



run_last_n_days(14)



# In[ ]:






# In[ ]:






# In[ ]:






# In[ ]:






# In[ ]:






# In[ ]:






# In[ ]:






# In[ ]:






# In[15]:



df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

df_h_h=df_h_h.set_index('Date')



# In[18]:



future_days_test["highest"] = df_h_h.競拍最高價



# In[ ]:



df_h_h



# In[80]:



future_days_test=X_train.copy() #createFeatures(future_days)

? ? ? ? ? ? ? ? ? ? ??

future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_train)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_train)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_train)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_train)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + \

future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15


future_days_test["Price"] = y_train


future_days_test = future_days_test[-100:]

plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("LSTM error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))




future_days_test=X_test.copy() #createFeatures(future_days)


future_days_test['XGB_PREDICTIONS'] = grid_search.predict(X_test)

future_days_test['GBR_PREDICTIONS'] = grid_search_GBR.predict(X_test)? ??

future_days_test['RF_PREDICTIONS'] = grid_search_RF.predict(X_test)?

future_days_test['BaggingR_PREDICTIONS'] = grid_search_BaggingR.predict(X_test)

future_days_test['Stacking_Model_PREDICTIONS']=future_days_test['RF_PREDICTIONS'] *0.25 + future_days_test['GBR_PREDICTIONS']*0.35 + \

future_days_test['BaggingR_PREDICTIONS']*0.25 + future_days_test['XGB_PREDICTIONS']*0.15


future_days_test["Price"] = y_test


plot_prediction(future_days_test, ["Price","Stacking_Model_PREDICTIONS"])


#print("Current-Method error: ", np.sqrt(mean_squared_error(df_validation.實際起拍價,df_validation.預(yù)測起拍價)))

print("LSTM error: ", np.sqrt(mean_squared_error(future_days_test.Price,future_days_test.Stacking_Model_PREDICTIONS)))

print("Trival error: ", np.sqrt(mean_squared_error(future_days_test.Price[1:],future_days_test.Price[:-1])))



# In[59]:



#np.sqrt(mean_squared_error(future_days_test.Stacking_Model_PREDICTIONS[:-1], y_test[:-1]))



# In[ ]:






# In[ ]:






# In[41]:



#grid_search.predict(X_train)



# # 導(dǎo)入歷史預(yù)測數(shù)據(jù)和最高價


# In[13]:



#Import the data and parse dates.

df_h_h = pd.read_csv('液化氣歷史預(yù)測數(shù)據(jù)_競拍最高價_20210917.csv')

df_h_h['Date']=pd.to_datetime(df_h_h['Date'],? format='%d/%m/%Y',infer_datetime_format=True)

df_h_h=df_h_h.set_index('Date')

#df_h_h.tail(5)

A=df_h_h.iloc[-14:,0]

B=df_h_h.iloc[-14:,1]



# In[20]:



df_h_h



# # 日度價格預(yù)測結(jié)果展示


# In[14]:



#顯示日度價格預(yù)測

import plotly.offline as pyo

import plotly.graph_objs as go

import numpy as np


np.random.seed(56)

final_results_C=future_days_test

final_results_C=round(final_results_C,2)


df_product.iloc[-1,0] = np.nan

df_product


# create traces

trace0 = go.Scatter(

? ? x = final_results_C.index,

? ? y = final_results_C['Stacking_Model_PREDICTIONS'],

? ? text=final_results_C['Stacking_Model_PREDICTIONS'],

? ? textposition='top center',

? ? #animation_frame=final_results_C.index,

? ? #fmt='.1f',

? ? #marker=dict(size=0.1*final_results_A['絕對誤差'],color="#9400D3"),

? ? mode = 'lines+markers+text',

? ? #hoverformat ="%{2}f",

? ? name = '融合模型預(yù)測值'

)

? ??


trace1 = go.Scatter(

? ? x = final_results_C.index,

? ? y = final_results_C['BaggingR_PREDICTIONS'],

? ? text=final_results_C['BaggingR_PREDICTIONS'],

? ? textposition='top center',

? ? #animation_frame=final_results_C.index,

? ? #fmt='.1f',

? ? #marker=dict(size=0.1*final_results_A['絕對誤差'],color="#9400D3"),

? ? mode = 'lines+markers+text',

? ? #hoverformat ="%{2}f",

? ? name = 'Bagging模型預(yù)測值'

)


trace2 = go.Scatter(

? ? x = final_results_C.index,

? ? y = final_results_C['RF_PREDICTIONS'],

? ? text=final_results_C['RF_PREDICTIONS'],

? ? textposition='top center',

? ? #animation_frame=final_results_C.index,

? ? #fmt='.1f',

? ? #marker=dict(size=0.1*final_results_A['絕對誤差'],color="#9400D3"),

? ? mode = 'lines+markers+text',

? ? #hoverformat ="%{2}f",

? ? name = 'RF模型預(yù)測值'

)


trace3 = go.Scatter(

? ? x = final_results_C.index,

? ? y = round(final_results_C['XGB_PREDICTIONS'],2),

? ? text=round(final_results_C['XGB_PREDICTIONS'],2),

? ? textposition='top center',

? ? #animation_frame=final_results_C.index,

? ? #fmt='.1f',

? ? #marker=dict(size=0.1*final_results_A['絕對誤差'],color="#9400D3"),

? ? mode = 'lines+markers+text',

? ? #hoverformat ="%{2}f",

? ? name = 'XGB模型預(yù)測值'

)


trace4 = go.Scatter(

? ? x = final_results_C.index,

? ? y = final_results_C['GBR_PREDICTIONS'],

? ? text=final_results_C['GBR_PREDICTIONS'],

? ? textposition='top center',

? ? #animation_frame=final_results_C.index,

? ? #fmt='.1f',

? ? #marker=dict(size=0.1*final_results_A['絕對誤差'],color="#9400D3"),

? ? mode = 'lines+markers+text',

? ? #hoverformat ="%{2}f",

? ? name = 'GBR模型預(yù)測值'

)


trace5 = go.Scatter(

? ? x = df_product.iloc[-14:,1:].index,

? ? y = df_product.iloc[-14:,0],

? ? text=df_product.iloc[-14:,0],

? ? textposition='top center',

? ? mode = 'lines+markers+text',

? ? name = '價格真實值'

)



trace6 = go.Scatter(

? ? x = df_h_h.iloc[-14:,0].index,

? ? y = df_h_h.iloc[-14:,0],

? ? text=df_h_h.iloc[-14:,0],

? ? textposition='top center',

? ? mode = 'lines+markers+text',

? ? name = '歷史預(yù)測起拍價'

)


trace7 = go.Scatter(

? ? x = df_h_h.iloc[-14:,0].index,

? ? y = df_h_h.iloc[-14:,1],

? ? text=df_h_h.iloc[-14:,1],

? ? textposition='top center',

? ? mode = 'lines+markers+text',

? ? name = '競拍最高價'

)


# trace1, trace2,trace3


data = [trace0, trace1,trace2,trace3, trace4,trace5,trace6,trace7]? # assign traces to data

layout = go.Layout(

? ? title = '日度價格預(yù)測值',

? ? hovermode='closest',

? ? #hoverformat ="%{2}f",

)

fig = go.Figure(data=data,layout=layout)

fig.update_traces(textposition='top center')

fig.show()


pyo.plot(fig, filename='疊加模型_最優(yōu)模型日度價格預(yù)測值.html')



# In[ ]:






# In[ ]:






# In[21]:



df_test.Price[1368:].values




preds.Stacking_Model_PREDICTIONS-df_test.Price[1368:].values




preds = future_days_test.copy()


preds


人工智能學(xué)習(xí)文件qoiqwetoiu的評論 (共 條)

分享到微博請遵守國家法律
防城港市| 庆城县| 黄冈市| 图木舒克市| 重庆市| 富阳市| 高尔夫| 班戈县| 湖北省| 独山县| 施秉县| 陕西省| 桂阳县| 华安县| 平原县| 波密县| 吴桥县| 武威市| 堆龙德庆县| 贵阳市| 镇巴县| 兴隆县| 申扎县| 旌德县| 高清| 榕江县| 邵阳县| 荃湾区| 宁晋县| 肇东市| 文成县| 饶平县| 合肥市| 手游| 都匀市| 临桂县| 枣阳市| 绵竹市| 中超| 炉霍县| 康定县|