2024.12.10

# bp_neural_network_iris.py

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, make_scorer

# 1. 加载 iris 数据集
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据

# 2. 使用留出法分割数据集,测试集占 1/3,训练集占 2/3,保持数据的同分布
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)

# 3. 创建 BP 神经网络模型(MLPClassifier)
model = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000, random_state=42)

# 4. 在训练集上训练模型
model.fit(X_train, y_train)

# 5. 使用五折交叉验证评估模型性能
cross_val_accuracy = cross_val_score(model, X, y, cv=5, scoring='accuracy')
cross_val_precision = cross_val_score(model, X, y, cv=5, scoring=make_scorer(precision_score, average='weighted'))
cross_val_recall = cross_val_score(model, X, y, cv=5, scoring=make_scorer(recall_score, average='weighted'))
cross_val_f1 = cross_val_score(model, X, y, cv=5, scoring=make_scorer(f1_score, average='weighted'))

# 打印交叉验证结果
print(f"交叉验证准确度:{cross_val_accuracy.mean()}")
print(f"交叉验证精度:{cross_val_precision.mean()}")
print(f"交叉验证召回率:{cross_val_recall.mean()}")
print(f"交叉验证 F1 值:{cross_val_f1.mean()}")

# 6. 使用测试集评估模型性能
y_pred = model.predict(X_test)

# 计算测试集的准确度、精度、召回率和 F1 值
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

# 打印测试集结果
print(f"测试集准确度:{accuracy}")
print(f"测试集精度:{precision}")
print(f"测试集召回率:{recall}")
print(f"测试集 F1 值:{f1}")
posted @   我也不想的  阅读(2)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示