我的代码记录——离散型自编码器模型训练

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd



def read_51412():
    df_1=pd.read_csv('51412/Diesel_LFWSRXSJ1K1F51412_2020-03-02_382.csv')
    df_2=pd.read_csv('51412/Diesel_LFWSRXSJ1K1F51412_2020-02-29_382.csv')
    df_3=pd.read_csv('51412/Diesel_LFWSRXSJ1K1F51412_2020-03-01_382.csv')
    df_4 = pd.read_csv('51412/Diesel_LFWSRXSJ1K1F51412_2020-03-03_382.csv')
    return df_1,df_2,df_3,df_4

def read_50379():
    df_1=pd.read_csv('50379/Diesel_LFWSRXSJ2K1F50379_2020-01-25_372.csv')
    df_2=pd.read_csv('50379/Diesel_LFWSRXSJ2K1F50379_2020-01-26_372.csv')
    df_3=pd.read_csv('50379/Diesel_LFWSRXSJ2K1F50379_2020-01-31_372.csv')
    return df_1,df_2,df_3

#变量选择
corr_label=(['EESP_VAR_N_W','TQMOD_VAR_TRQ_ACT_W','EBP_VAR_W'])

#变量选择及工况选择
def dataselect(X):
    # X = X[(X['EESP_VAR_N_W'] > 900) &(X['EESP_VAR_N_W'] <1300)&(X['TQMOD_VAR_TRQ_ACT_W'] >= 1000) & (X['TQMOD_VAR_TRQ_ACT_W'] <= 1100)]
    data=[]
    for i in corr_label:
        data.append(X[i])
    data=pd.DataFrame(data)
    data = pd.DataFrame(data.values.T, index=data.columns, columns=corr_label) #data存储了筛选出的变量的所有数值
    data.dropna(axis=0, how='any', inplace=True)
    return data

#数据读取
df_1,df_2,df_3,df_4=read_51412()
data_1=dataselect(df_1)
data_2=dataselect(df_2)
data_3=dataselect(df_3)
data_4=dataselect(df_4)

#超参数定义
batch_size=10
epochs=3000
lr=0.0001


#数据标准化
from tensorflow.keras import optimizers
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
train_X=pd.concat([data_1,data_2,data_3,data_4])
scaler.fit(train_X)
train, validation = train_test_split(train_X, train_size = 0.7, random_state = 1)

train = scaler.transform(train)
validation = scaler.transform(validation)


#使用主成分分析
use_PCA=True
from sklearn.decomposition import PCA
if use_PCA:
    n_components=1
    pca = PCA(n_components=n_components)
    pca.fit(train)
    train = pca.transform(train)
    validation = pca.transform(validation)
else:
    n_components = len(corr_label)

from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard

#模型搭建
if run_code==None:
    Dense_autoencoder = Sequential()
    Dense_autoencoder.add(layers.Dense(10,activation='tanh',input_shape=(1, n_components)))
    Dense_autoencoder.add(layers.Dense(6, activation='relu'))
    Dense_autoencoder.add(layers.Dense(4, activation='relu'))
    Dense_autoencoder.add(layers.Dense(1, activation='tanh'))
    Dense_autoencoder.add(layers.Dense(2, activation='relu'))
    Dense_autoencoder.add(layers.Dense(n_components, activation='tanh'))
    Dense_autoencoder.summary()
    adam = optimizers.Adam(lr)
    Dense_autoencoder.compile(loss='mse', optimizer=adam)
    cp = ModelCheckpoint(filepath="model.h5",
                                   save_best_only=True,
                                   verbose=1)
    autoencoder_history=Dense_autoencoder.fit(train, train, epochs=epochs, batch_size=batch_size,
                                        validation_data=(validation,validation),verbose=2,
                                        callbacks=[cp]).history


else:
    print('run_code')

plt.plot(autoencoder_history['loss'], linewidth=2, label='Train')
plt.plot(autoencoder_history['val_loss'], linewidth=2, label='Valid')
plt.legend(loc='upper right')
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.show()






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值