机器学习任务5

# 导入所需的库

import pandas as pd

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, classification_report

 

# 1. 加载Iris数据集

iris = load_iris()

X = iris.data  # 特征集

y = iris.target  # 标签集

 

# 2. 留出法,将数据集按70%训练集和30%测试集拆分

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)

 

print("训练集大小:", X_train.shape, ", 测试集大小:", X_test.shape)

 

# 3. 创建一个MLP分类器并训练模型

mlp = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000, random_state=42)

mlp.fit(X_train, y_train)

 

# 4. 使用五折交叉验证对模型性能进行评估

accuracy_scores = cross_val_score(mlp, X, y, cv=5, scoring='accuracy')

precision_scores = cross_val_score(mlp, X, y, cv=5, scoring='precision_weighted')

recall_scores = cross_val_score(mlp, X, y, cv=5, scoring='recall_weighted')

f1_scores = cross_val_score(mlp, X, y, cv=5, scoring='f1_weighted')

 

print("交叉验证结果:")

print("准确率:", accuracy_scores.mean())

print("精确率:", precision_scores.mean())

print("召回率:", recall_scores.mean())

print("F1值:", f1_scores.mean())

 

# 5. 使用测试集测试模型的性能

y_pred = mlp.predict(X_test)

 

# 打印分类报告

report = classification_report(y_test, y_pred, target_names=iris.target_names)

print("分类报告:\n", report)

 

# 6. 计算最终的性能指标

final_accuracy = accuracy_score(y_test, y_pred)

final_precision = precision_score(y_test, y_pred, average='weighted')

final_recall = recall_score(y_test, y_pred, average='weighted')

final_f1 = f1_score(y_test, y_pred, average='weighted')

 

print("测试集性能指标:")

print("准确率:", final_accuracy)

print("精确率:", final_precision)

print("召回率:", final_recall)

print("F1值:", final_f1)

posted @ 2024-10-23 10:53  芊羽鱼  阅读(5)  评论(0)    收藏  举报