IGBT 温度预测 三
下面接着上一期的话题我们继续探索IGBT温度预测的问题。
这里将创建一个简单的深度学习(Deep Learning)神经网络模型,并使用标准化后的数据对其进行训练。模型的目标是最小化均方误差(mean squared error),即实际输出值与模型预测值之间的平方差。这是典型的回归问题,目标是学习输入特征与实际输出值之间的映射关系。
from sklearn.preprocessing import StandardScaler
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Input, Dropout
# 创建标准化器
scaler = StandardScaler()
# 对输入数据进行标准化
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# dnn1
input_1 = Input(shape=(X_train.shape[1]))
hlay1_1 = Dense(32, activation="relu")(input_1)
drop1 = Dropout(0.2)(hlay1_1)
hlay2_1 = Dense(32, activation="relu")(drop1)
drop2 = Dropout(0.2)(hlay2_1)
hlay3_1 = Dense(32, activation="relu")(drop2)
drop3 = Dropout(0.2)(hlay3_1)
hlay4_1 = Dense(16, activation="relu")(drop3)
drop4 = Dropout(0.2)(hlay4_1)
final_dnn1 = Dense(1, activation="linear")(drop4)
# 创建模型
dnn1 = Model(inputs=input_1, outputs=final_dnn1)
# 编译模型
dnn1.compile(optimizer="adam", loss="mean_squared_error")
# 训练模型
history = dnn1.fit(
X_train_scaled,
y_train,
epochs=50,
batch_size=32,
validation_data=(X_test_scaled, y_test),
)
简单解释下代码
-
数据标准化(Data Standardization):
StandardScaler
用于对数据进行标准化,即将输入数据按特征进行标准化,使其均值为0,方差为1。-
神经网络模型(Neural Network Model):
-
使用 TensorFlow 的 Keras API 构建了一个简单的深度神经网络(DNN)模型。
Input
层定义了模型的输入,其形状与训练数据的特征数量相对应。Dense
层表示全连接层,每个神经元与上一层的所有神经元相连接。Dropout
层用于在训练过程中随机失活一些神经元,以防止过拟合。Model
类定义了整个神经网络的结构,包括输入和输出。-
模型编译(Model Compilation):
-
使用
compile
方法编译模型,指定优化器(optimizer)和损失函数(loss function)。 - 优化器(这里是 "adam")用于最小化损失函数,使模型更好地拟合数据。
-
模型训练(Model Training):
-
使用
fit
方法对模型进行训练,传递训练数据、目标数据和一些训练参数(如批量大小、训练周期数)。 - 训练数据是经过标准化处理的输入特征(
X_train_scaled
),目标数据是对应的实际输出值(y_train
)。 - 在训练过程中,模型通过不断地调整权重和偏置来最小化损失函数。
接下来看一下绘制训练和验证过程中的损失变化。通过可视化的方式,帮助我们理解和评估模型在训练过程中的性能变化。
训练损失(Training Loss)比验证损失(Validation Loss)大,这通常意味着模型在训练数据上的表现不如在验证数据上。这可能是因为模型还没有足够的训练,或者训练数据和验证数据的分布有所不同。
然而,这种情况在实际应用中并不常见,因为通常我们期望模型在训练数据上的表现要优于或等于在验证数据上的表现。
通过可视化的方式,对比验证数据和预测数据,帮助我们理解和评估深度神经网络模型的预测性能。
这个结果看起来并没有随机森林模型预测的结果好哦。
继续绘制在时间轴上验证数据和预测数据的对比
放大局部数据
这里只是建立一个简单的DNN深度神经网络模型并对IGBT的温度进行预测。
这个数据集最大的问题可能是时间步长太大,不能够反映出IGBT温度的时间滞后性。这里只是作为学习使用,简单介绍如何使用机器学习进行数据预测,以后将使用更合适的数据集解释时间序列的预测。