Python 样本外&;神经网络/长短时记忆(LSTM)的样本内测试;FCNN(全连接神经网络)
我目前正在为需求预测编写不同的神经网络(LSTM&RNN)。因此,我为FCNN设置了以下代码:Python 样本外&;神经网络/长短时记忆(LSTM)的样本内测试;FCNN(全连接神经网络),python,tensorflow,keras,time-series,prediction,Python,Tensorflow,Keras,Time Series,Prediction,我目前正在为需求预测编写不同的神经网络(LSTM&RNN)。因此,我为FCNN设置了以下代码: from numpy.random import seed seed(1) from tensorflow import set_random_seed set_random_seed(2) from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.callbacks import EarlyStopping from R
from numpy.random import seed
seed(1)
from tensorflow import set_random_seed
set_random_seed(2)
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.callbacks import EarlyStopping
from RegscorePy import *
early_stopping = EarlyStopping()
from keras.optimizers import SGD
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from numpy.random import seed
seed(1)
from tensorflow import set_random_seed
set_random_seed(2)
X = new_data[['Volume_MT','Avg_Price_per_kg','Product_']]
y = new_data['Volume_MT'].values
sc= MinMaxScaler()
X = sc.fit_transform(X)
y = y.reshape(-1,1)
y =sc.fit_transform(y)
## Train test split follows this distinguished code pattern and helps creating train and test set to build machine learning.
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.2, random_state = 0)
X_train.shape, y_train.shape, X_test.shape, y_test.shape
# Manual Optimization to review behaviour
epochs = 200
batch_size=150
patience_early_stopping = 3
neurons_L1 = 2
neurons_L2 = 350
neurons_L3 = 120
# Base Model
model = Sequential()
model.add(Dense(neurons_L1, input_dim=3, activation='relu'))
model.add(Dense(neurons_L2,activation='linear'))
model.add(Dense(neurons_L3,activation='relu'))
model.add(Dense(1,activation='linear'))
#Compile & Adapt
opt='adam'
model.compile(loss='mean_absolute_error', optimizer=opt, metrics=['mse'])
es = EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=patience_early_stopping)
#Fit Model
history = model.fit(X_train,y_train,validation_data=(X_test,y_test),epochs=epochs,batch_size = batch_size, verbose = 2 , callbacks=[es])
#Prediction
y_pred = model.predict(X_test)
expected = df_final['Volume_MT']
predicted= df_final['Volume_pred']
mae_FCNN = mean_absolute_error(expected, predicted)
mse_FCNN = mean_squared_error(expected, predicted)
r2_FCNN= r2_score(expected, predicted)
mape_FCNN = np.mean(np.abs(expected - predicted)/np.abs(expected))
FCCN_baseline_mae = metrics.mean_absolute_error(df.Volume_MT, df.Volume_pred)
FCNN_baseline_mse = np.sqrt(metrics.mean_squared_error(df.Volume_MT, df.Volume_pred))
FCNN_baseline_r2= r2_score(df.Volume_MT, df.Volume_pred)
FCNN_baseline_train_time = round(stop-start,2)
# AIC &BIC
p = n
b = bic.bic(df.Volume_MT, df.Volume_pred, p)
a = aic.aic(df.Volume_MT, df.Volume_pred, p)
print('FCNN_Baseline_MAE:', mae_FCNN)
print('FCNN_Baseline_Mean_Square_Error:', mse_FCNN)
print('FCNN_Baseline_R2-Score:', r2_FCNN)
print('FCNN_Baseline_AIC:', a)
print('FCNN_Baseline_BIC:', b)
df.plot()
df.tail(10)
由于我的数据集具有不平衡的体积,并且只有3000个样本,因此我使用SVD(合成数据仓库)生成了更多样本(使用SVD PAR=10000个样本)
日期
卷
平均价格
产品_
国家_
2015-06-01
22.91
3.01
26
15
2015-06-01
26.29
3.26
26
16
2015-08-01
31.43
3.19
26
5.
2015-09-01
32.69
3.22
26
16
2015-09-01
33.54
3.22
26
16
2015-09-01
34.73
3.22
26
16