机器学习任务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)

浙公网安备 33010602011771号