BP神经网络鸢尾花分类python代码
时间: 2025-06-12 19:48:20 浏览: 14
### BP神经网络对鸢尾花数据集进行分类的Python代码示例
以下是一个使用BP(反向传播)神经网络对鸢尾花数据集进行分类的Python代码示例。此代码基于`scikit-learn`库中的`MLPClassifier`实现,这是一种常见的多层感知器(MLP)模型,适用于解决分类问题。
```python
# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import classification_report, confusion_matrix
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征
y = iris.target # 标签
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化处理
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 定义BP神经网络模型
mlp = MLPClassifier(hidden_layer_sizes=(10, 10), max_iter=1000, activation='relu', solver='adam', random_state=42)
# 训练模型
mlp.fit(X_train, y_train)
# 在测试集上进行预测
predictions = mlp.predict(X_test)
# 输出分类报告和混淆矩阵
print("Confusion Matrix:")
print(confusion_matrix(y_test, predictions))
print("\nClassification Report:")
print(classification_report(y_test, predictions))
```
上述代码实现了以下功能:
1. **加载数据**:使用`load_iris()`函数加载鸢尾花数据集[^5]。
2. **数据划分**:将数据集划分为训练集和测试集,比例为8:2。
3. **数据标准化**:使用`StandardScaler`对特征进行标准化处理,以提高模型性能。
4. **定义模型**:创建一个具有两层隐藏层(每层10个神经元)的BP神经网络模型。
5. **训练与预测**:通过`fit()`方法训练模型,并通过`predict()`方法在测试集上生成预测结果。
6. **评估模型**:输出混淆矩阵和分类报告以评估模型性能。
### 注意事项
- 参数`hidden_layer_sizes`定义了隐藏层的层数和每层的神经元数量。可以根据需求调整这些参数。
- `activation`参数指定了激活函数,默认为ReLU函数。
- `solver`参数定义了优化算法,`adam`是一种常用的自适应优化算法。
- `max_iter`参数设置了最大迭代次数,确保模型收敛[^6]。
阅读全文
相关推荐
















