# %%
#入力用データに変換
DATA_MAX=1.5
DATA_MIN=-1.5
def func_make_input(source):
input_train=np.array(source)
input_train=(input_train-DATA_MIN)/(DATA_MAX-DATA_MIN)
input_train=np.clip(input_train,0.0,1.0)
print(input_train.shape)
return np.reshape(input_train, (input_train.shape[0], input_train.shape[1], 1))
train_X = func_make_input(data_raw_train)
train_Y = train_X
print(train_X.shape)
print(train_Y.shape)
plt.style.use(['default'])
plt.figure(figsize=(12,3))
plt.subplot(1,2,1)
plt.plot(train_X[0])
plt.subplot(1,2,2)
plt.plot(train_X[0][:100])
plt.show()
# %%
model = keras.models.Sequential()
# model.add(keras.layers.LSTM(300, activation='relu', return_sequences=True, input_shape=(LEN_INPUT, 1)))
# model.add(keras.layers.LSTM(300, activation='relu'))
# model.add(keras.layers.Dense(25, activation='softmax'))
# model.compile(loss='mse', optimizer='adam')
model.add(keras.layers.Conv1D(10, 10, padding='same', input_shape=(train_X.shape[1], 1), activation='relu'))
model.add(keras.layers.MaxPooling1D(2, padding='same'))
model.add(keras.layers.Conv1D(10, 10, padding='same', activation='relu'))
model.add(keras.layers.MaxPooling1D(2, padding='same'))
model.add(keras.layers.Conv1D(10, 10, padding='same', activation='relu'))
model.add(keras.layers.UpSampling1D(2))
model.add(keras.layers.Conv1D(10, 10, padding='same', activation='relu'))
model.add(keras.layers.UpSampling1D(2))
model.add(keras.layers.Conv1D(1, 10, padding='same', activation='sigmoid'))
model.compile(loss='mse', optimizer='adam')
print(model.summary())
# %%
# EPOCHS=30
# #学習
# history = model.fit(train_X, train_Y, validation_split=0.1, epochs=EPOCHS)
# model.save('test.h5')
# #損失プロット
# plt.plot(range(EPOCHS), history.history['loss'], label='loss')
# plt.plot(range(EPOCHS), history.history['val_loss'], label='val_loss')
# plt.xlabel('epoch')
# plt.ylabel('loss')
# plt.legend()
# plt.show()
model = keras.models.load_model('test.h5')
# %%
dic_mse={}
dic_output={}
for key,value in data_raw_test.items():
output = model.predict(func_make_input(value))
dic_output[key]=output
list_mse=[]
for i in range(output.shape[0]):
list_mse.append( mean_squared_error(value[i], output[i]))
dic_mse[key]=list_mse
plt.figure(figsize=(14,3))
plt.subplot(121)
for key,value in dic_mse.items():
plt.plot(value,label=key)
plt.legend()
plt.subplot(122)
plt.boxplot(dic_mse.values(),labels=dic_mse.keys())
plt.xticks(rotation=45)
plt.grid(True)
plt.show()
plt.style.use(['default'])
plt.figure(figsize=(14,5))
for k,(key,value) in enumerate(dic_output.items(),1):
plt.subplot(2,5,k)
for i in range(1):
plt.plot(value[i,:100],label=key+str(i))
input=func_make_input(data_raw_test[key])
plt.plot(input[i][:100],label=key+str(i)+' raw')
plt.legend()
plt.show()
# %%