メモ

# %%
#入力用データに変換
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()

 

# %%