机器学习-神经网络:预测疲劳寿命(训练+预测)

1、数据准备

训练数据为train.csv,预测数据为test.csv。

训练数据
x1x2x3y
0.050186.259976.2
0.050148.2487299.5
0.050129.23359289.25
0.050117.83796450.33
0.054137.710471.6
0.054107.175978
0.05487.98424848.33
0.05480.33639609
0.056124.79746.2
0.05697.5291818.25
0.05682.17297379.5
0.05674.54769776.5
0.058115.939530.8
0.05889.0193123.75
0.05873.82303079.5
0.05870.05688099.33
100205.8210004.2
100175.3276471
100160.08410666
100156.27876261
104149.8913740.6
104135.6180659.67
104124.9395372
104121.34813718
106138.6114145.6
106123.6373092.5
106112.39380828
106108.64721834
108128.669730.4
108114.3779006.25
108103.65362419
108100.07805459
预测数据
x1x2x3
0.05695
0.05681
106124
0.056258
0.056249
106200

2、训练模型

# 导入库
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import regularizers

# 加载数据
df = pd.read_csv('train.csv')
x = df[['x1', 'x2', 'x3']].values
y = df[['y']].values

# 数据归一化
x_scaler = MinMaxScaler(feature_range=(-1, 1))
y_scaler = MinMaxScaler(feature_range=(-1, 1))
x = x_scaler.fit_transform(x)
y = y_scaler.fit_transform(y)

# 定义神经网络模型
model = Sequential()
model.add(Dense(10, activation='relu', input_shape=(3,), kernel_regularizer=regularizers.l2(0.01)))
model.add(Dense(16, activation='relu', kernel_regularizer=regularizers.l2(0.01)))
model.add(Dense(1, activation='linear'))

# 误差记录
optimizer = Adam(lr=0.0001)
model.compile(optimizer=optimizer, loss='mse')

# 训练模型
history = model.fit(x, y, epochs=50000, batch_size=67)

# 评估模型
mse = model.evaluate(x, y)
print('Validation MSE:', mse)

# 保存模型的权重和偏差
model.save('my_model.h5')

# 误差曲线
# 设置中文显示和解决负号显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(history.history['loss'])
plt.title("模型误差")
plt.ylabel("误差")
plt.xlabel("循环次数")
plt.show()

# 预测值输出
y_pred = model.predict(x)

# 预测值反归一化
y = y_scaler.inverse_transform(y)
y_pred = y_scaler.inverse_transform(y_pred)
print("the prediction is:", y_pred)

# 将预测值存储到Excel表中
df_out = pd.DataFrame(y_pred, columns=['Prediction'])
df_out.to_excel('prediction.xlsx', index=False)

# 实际值与预测值的对比图
# 设置中文显示和解决负号显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.scatter(y, y_pred)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
plt.xlabel("实际值")
plt.ylabel("预测值")
plt.show()

训练神经网络模型一共四层,第一层为输入变量,后三层为Dense ,其中Dense中从参数可以调整:

model.add(Dense(10, activation='relu', input_shape=(3,), kernel_regularizer=regularizers.l2(0.01)))

此层神经元个数为10,激活函数为relu,并且进行了正则化处理。

3、预测模型

# 导入库
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import load_model

# 数据预处理(归一化)
df = pd.read_csv('train.csv')
x = df[['x1', 'x2', 'x3']].values
y = df[['y']].values
x_scaler = MinMaxScaler(feature_range=(-1, 1))
y_scaler = MinMaxScaler(feature_range=(-1, 1))
x = x_scaler.fit_transform(x)
y = y_scaler.fit_transform(y)

# 加载预测数据
df_test = pd.read_csv('test.csv')
x_test = df_test[['x1', 'x2', 'x3']].values

# 预测数据归一化
x_test = x_scaler.transform(x_test)

# 加载训练好的神经网络模型
model = load_model('my_model.h5')

# 对预测数据进行预测
y_pred = model.predict(x_test)
y_pred = y_scaler.inverse_transform(y_pred)
print(y_pred)

4、总结

  1. 导入所需的库,包括numpy、pandas、matplotlib、sklearn等。
  2. 从CSV文件中加载训练数据,并将输入特征和输出标签分别存储在x和y变量中。
  3. 对数据进行归一化处理,使用MinMaxScaler将输入特征和输出标签的值都缩放到[-1, 1]的范围内。
  4. 定义一个Sequential模型,并添加三个Dense层作为神经网络的结构。模型使用relu激活函数,并应用L2正则化。
  5. 编译模型,指定优化器为Adam,并使用均方误差(MSE)作为损失函数。
  6. 训练模型,将归一化后的输入特征x和输出标签y作为训练数据,进行50000个周期的训练。
  7. 评估模型,计算在训练数据上的均方误差。
  8. 保存模型的权重和偏差到文件中。
  9. 绘制训练过程中的误差曲线。
  10. 进行预测,并将预测结果反归一化。
  11. 将预测结果保存到Excel表格中。
  12. 绘制实际值与预测值的对比散点图。
  13. 调用保存好神经网络进行预测
  • 14
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
### 回答1: Python可以使用多种库来实现BP神经网络回归预测模型,其中比较常用的是TensorFlow和Keras。以下是一个使用Keras库实现BP神经网络回归预测模型的示例代码: ```python from keras.models import Sequential from keras.layers import Dense import numpy as np # 构建数据集 X = np.array([[, ], [, 1], [1, ], [1, 1]]) y = np.array([, 1, 1, ]) # 构建模型 model = Sequential() model.add(Dense(4, input_dim=2, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 model.fit(X, y, epochs=100, batch_size=4) # 预测结果 print(model.predict(X)) ``` 在上述代码中,我们首先构建了一个数据集,包含4个样本,每个样本有2个特征和1个标签。然后,我们使用Keras库构建了一个包含1个输入层、1个隐藏层和1个输出层的BP神经网络模型。其中,输入层有2个神经元,隐藏层有4个神经元,输出层有1个神经元。我们使用ReLU作为隐藏层的激活函数,使用sigmoid作为输出层的激活函数。模型的损失函数为二元交叉熵,优化器为Adam。最后,我们使用训练集对模型进行训练,并使用训练好的模型对训练集进行预测。 ### 回答2: BP(Backpropagation,反向传播)神经网络是一种常用的人工神经网络,其能够对非线性问题进行学习和预测。在实际应用中,BP神经网络广泛用于数值预测方面。而Python作为一种高级编程语言,其有着强大的数据处理和可视化功能,以及优秀的数值计算库,如Numpy、Scipy等。因此,Python能够较为快捷地实现BP神经网络回归预测模型。 步骤如下: 1. 数据集准备:对于回归问题,需要一个数据集作为模型训练预测的基础。数据集应包括训练集和测试集,训练集用于训练模型,测试集用于检验模型的泛化能力。数据集应该考虑到样本数量和数据维度的问题,以及数据集的均衡性。同时,建议进行数据标准化等处理,以便更好地进行模型训练。 2. 模型搭建:在Python中,BP神经网络的搭建可以借助一些开源库,如Keras、TensorFlow等,这些库已经提供了较为完整的神经网络搭建方法和API。在搭建模型时,需要确定神经网络的输入层、隐藏层、输出层,并确定每层的神经元个数、激活函数等参数。同时,需要指定损失函数和优化器,以便进行模型训练和优化。 3. 模型训练:利用上述数据集和搭建的模型,可以进行模型训练。在进行模型训练时,一般采取批量梯度下降和mini-batch梯度下降等方法。同时,需要注意模型的过拟合和欠拟合问题,可采用一些正则化方法或者数据集增强等手段处理。 4. 模型预测:模型训练后,需要进行模型预测。利用测试集进行预测,并计算预测误差、平均误差等指标,以评估模型的预测效果。如果预测效果不理想,可以尝试调整模型超参数、优化方法等。 总结:Python实现BP神经网络回归预测模型是一种较为便捷的方法,但需要对BP神经网络的基本概念和数学知识有一定的了解。同时需要进行数据集准备、模型搭建、模型训练和模型预测等步骤,以便提高模型预测精度和泛化能力。 ### 回答3: BP神经网络是一种常用的人工神经网络,被广泛应用于分类和回归预测等领域。在回归预测中,BP神经网络可以通过训练样本对数据进行学习,并根据学习结果进行预测。下面,我将介绍如何使用Python实现BP神经网络回归预测模型。 1. 导入必要的库 在实现BP神经网络预测模型前,首先需要导入必要的库,如numpy、pandas、matplotlib、sklearn等,这些库提供了丰富的函数和方法,方便我们进行数据处理、模型训练预测等操作。 2. 数据预处理 在实现BP神经网络预测模型前,需要进行数据预处理,包括数据清洗、特征选择、数据缩放、数据划分等。首先,需要将数据集按照一定比例分为训练集和测试集,并对数据进行标准化处理,将数据缩放到0-1范围内。这样可以避免数据范围对模型训练的影响,并提高模型的稳定性和预测准确率。 3. 构建模型 在数据预处理完成后,可以开始构建BP神经网络模型。在构建模型时,需要确定网络结构、激活函数、优化算法等参数。常用的激活函数包括sigmoid函数、ReLU函数、tanh函数等,优化算法包括梯度下降法、Adam算法、LBFGS算法等。在选择模型参数时,需要通过试验和比较选择最优的参数组合。 4. 模型训练 模型构建完成后,就可以使用训练数据对模型进行训练了。在进行训练时,需要选定适当的训练次数和学习率等超参数。训练过程中,可以监控模型的性能指标,如均方误差、平均绝对误差等,评估模型的训练效果。 5. 模型预测 模型训练完成后,就可以使用测试数据对模型进行预测了。在进行预测时,需要将测试数据输入到训练好的模型中,并根据模型输出进行预测预测结果可以通过可视化和统计分析等方法进行分析和比较。 总之,Python可以方便地实现BP神经网络回归预测模型,可以通过数据预处理、模型构建、模型训练预测等步骤完成。使用Python实现BP神经网络预测模型,可以有效地处理各种数据类型,提高预测准确率和模型稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值