bp神经网络对运动员身高体重预测模型python
时间: 2023-08-20 07:02:36 浏览: 156
bp神经网络,bp神经网络预测模型,Python
5星 · 资源好评率100%
BP神经网络(Backpropagation Neural Network)是一种常用的人工神经网络模型,可以通过训练数据自动学习输入与输出之间的关系。下面是一个用Python编写的BP神经网络运动员身高体重预测模型的示例代码:
```python
import numpy as np
# 定义激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义BP神经网络类
class BPNN:
def __init__(self, input_size, hidden_size, output_size):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
# 初始化权重矩阵
self.w1 = np.random.randn(hidden_size, input_size)
self.w2 = np.random.randn(output_size, hidden_size)
def forward(self, x):
# 前向传播
self.z1 = np.dot(self.w1, x)
self.a1 = sigmoid(self.z1)
self.z2 = np.dot(self.w2, self.a1)
self.a2 = sigmoid(self.z2)
return self.a2
def backward(self, x, y, learning_rate):
# 反向传播
delta2 = (self.a2 - y) * self.a2 * (1 - self.a2)
delta1 = np.dot(self.w2.T, delta2) * self.a1 * (1 - self.a1)
self.w1 -= learning_rate * np.dot(delta1, x.T)
self.w2 -= learning_rate * np.dot(delta2, self.a1.T)
def train(self, X, y, epochs, learning_rate):
for i in range(epochs):
loss = 0
for j in range(len(X)):
x = X[j].reshape(-1, 1)
target = y[j].reshape(-1, 1)
output = self.forward(x)
self.backward(x, target, learning_rate)
loss += np.square(output - target) / 2
if i % 100 == 0:
print('Epoch:', i, 'Loss:', loss)
def predict(self, x):
x = x.reshape(-1, 1)
return self.forward(x)
# 准备训练数据
X = np.array([[170, 65], [180, 70], [160, 55], [175, 68]])
y = np.array([[175], [185], [165], [180]])
# 创建BP神经网络模型
model = BPNN(2, 3, 1)
# 训练模型
model.train(X, y, epochs=1000, learning_rate=0.1)
# 预测
test_data = np.array([190, 80])
print('预测结果:', model.predict(test_data))
```
以上代码使用BP神经网络,通过输入运动员的身高和体重来预测其体重。模型通过多次迭代,自动调整权重矩阵以逐渐减小损失值,最终得到一个能预测运动员体重的模型。在实际的运行中,可以根据需要调整隐藏层的大小、迭代次数和学习率等参数,以获得更准确的预测结果。
阅读全文