bp神经网络曲线拟合 给出相关py代码
时间: 2024-11-24 13:41:30 浏览: 3
BP神经网络,bp神经网络预测模型,Python
5星 · 资源好评率100%
BP神经网络是一种用于解决非线性问题的机器学习模型,特别适合于曲线拟合任务。它通过反向传播算法(Backpropagation)调整权重,以最小化预测值与实际值之间的误差。以下是一个简单的Python代码片段,使用Keras库构建一个二维数据的BP神经网络进行曲线拟合:
```python
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
# 假设我们有x和y的数据
x = np.linspace(0, 1, 100)
y = x**2 + np.random.normal(0, 0.1, size=len(x))
# 数据预处理:增加多项式特征
poly_features = PolynomialFeatures(degree=3) # 可以调整多项式的阶数
x_poly = poly_features.fit_transform(x[:, None])
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x_poly, y, test_size=0.2)
# 构建BP神经网络模型
model = Sequential()
model.add(Dense(16, input_dim=x_poly.shape[1], activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='linear'))
# 编译模型
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(x_train, y_train, epochs=500, validation_data=(x_test, y_test), verbose=0)
# 使用模型进行预测
predictions = model.predict(x_test)
# 显示原始数据和预测结果
import matplotlib.pyplot as plt
plt.scatter(x, y, label='Original data')
plt.plot(x, predictions, label='Predicted curve', color='red')
plt.legend()
plt.show()
阅读全文