鸢尾花完整的python代码_鸢尾花BP算法实现 Python

本文介绍了鸢尾花数据集的Python BP神经网络实现,包括数据预处理、神经网络结构、梯度下降优化及预测。通过10层隐藏层的神经网络模型,实现了对鸢尾花特征值的分类,最终展示了一个测试样本的预测结果及其准确率。
摘要由CSDN通过智能技术生成

映射关系:

40e1f78e8c974176bfd3fac6698586bb.gif

train

120条数据,4个特征值

6f09868adf8747408fcfc35fff073483.gif

W1

f358132b6e064c9d96474d03bee5837d.gif

arrY1

隐藏层为10层

9c7582600fdd404896e73095ed8dc385.gif

W2

57e20e9f274c4738a30bc8c4c0343d39.gif

arrY2

每一条数据,有3种输出结果

测试数据,输入层

权重

隐藏层

权重

输出层

输入层到隐藏层:

7a6aa9150a68496a83d7dd51205b9e6f.gif

隐藏层到输出层:706f65aa3b4a4ab582d377b8b902815b.gif

损失函数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸢尾花是一个常用的机器学习分类问题,而BP神经网络是一种常用的分类算法。下面是一个用Python编写的BP算法解决鸢尾花分类问题的示例: 首先,我们需要导入必要的模块,如numpy和pandas: ```python import numpy as np import pandas as pd ``` 然后,我们读取鸢尾花的数据集,可以使用pandas的read_csv函数: ```python data = pd.read_csv('iris.csv') ``` 接下来,我们将数据集分为特征和标签,特征为花萼长度、花萼宽度、花瓣长度和花瓣宽度,而标签为鸢尾花的类别: ```python features = data.iloc[:, 0:4].values labels = data.iloc[:, 4].values ``` 然后,我们将标签进行独热编码,将其转化为向量的形式: ```python from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() labels = encoder.fit_transform(labels) ``` 接下来,我们需要将数据集划分为训练集和测试集,可以使用train_test_split函数: ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2) ``` 然后,我们需要定义神经网络的结构和参数: ```python input_size = 4 hidden_size = 6 output_size = 3 learning_rate = 0.1 epochs = 1000 ``` 接下来,我们可以开始构建神经网络模型: ```python class NeuralNetwork: 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(self.input_size, self.hidden_size) self.W2 = np.random.randn(self.hidden_size, self.output_size) def forward(self, X): self.z = np.dot(X, self.W1) self.z2 = self.sigmoid(self.z) self.z3 = np.dot(self.z2, self.W2) self.output = self.sigmoid(self.z3) def sigmoid(self, s): return 1 / (1 + np.exp(-s)) def sigmoid_derivative(self, s): return s * (1 - s) def backward(self, X, y): self.error = y - self.output self.delta = self.error * self.sigmoid_derivative(self.output) self.W2 += np.dot(self.z2.T, self.delta) self.delta2 = np.dot(self.delta, self.W2.T) * self.sigmoid_derivative(self.z2) self.W1 += np.dot(X.T, self.delta2) def train(self, X, y): self.forward(X) self.backward(X, y) def predict(self, X): self.forward(X) return np.argmax(self.output, axis=1) ``` 最后,我们可以训练并测试神经网络模型: ```python np.random.seed(0) model = NeuralNetwork(input_size, hidden_size, output_size) for epoch in range(epochs): model.train(X_train, y_train) y_pred = model.predict(X_test) from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ``` 通过以上步骤,我们就完成了用Python编写BP算法解决鸢尾花分类问题的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值