12.11

(1)从scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注意同分布取样);

(2)使用训练集训练随机森林分类算法;

(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选择;

(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验八的部分。

 

import numpy as np

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split, cross_validate

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score, classification_report, confusion_matrix

 

# 第一步:加载Iris数据集

iris = load_iris()

X = iris.data

y = iris.target

 

# 留出法,留出1/3样本作为测试集

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

 

# 第二步:使用训练集训练随机森林分类算法

model = RandomForestClassifier(n_estimators=100, random_state=42)  # 创建随机森林分类器

model.fit(X_train, y_train)  # 训练模型

 

# 第三步:使用五折交叉验证对模型性能进行评估

scoring = {

    'accuracy': make_scorer(accuracy_score),

    'precision': make_scorer(precision_score, average='weighted'),

    'recall': make_scorer(recall_score, average='weighted'),

    'f1': make_scorer(f1_score, average='weighted')

}

 

# 进行五折交叉验证

cv_results = cross_validate(model, X_train, y_train, cv=5, scoring=scoring)

 

# 打印交叉验证结果

print('Cross-validated accuracy:', np.mean(cv_results['test_accuracy']))

print('Cross-validated precision:', np.mean(cv_results['test_precision']))

print('Cross-validated recall:', np.mean(cv_results['test_recall']))

print('Cross-validated F1 score:', np.mean(cv_results['test_f1']))

 

# 第四步:使用测试集测试模型的性能

y_pred = model.predict(X_test)

 

# 输出分类报告

print("\nClassification Report:")

print(classification_report(y_test, y_pred))

 

# 混淆矩阵

print("Confusion Matrix:")

print(confusion_matrix(y_test, y_pred))

 

load_iris():加载Iris数据集。

train_test_split():将数据集分割为训练集和测试集。

RandomForestClassifier():创建随机森林分类器。

fit(X, y):训练模型。

make_scorer():将评分函数转换为可用于模型评估的可调用对象。

cross_validate():使用交叉验证评估模型。

predict(X):用训练好的模型对新样本进行预测。

classification_report(y_true, y_pred):生成分类评估报告,包含精度、召回率和F1值等指标。

confusion_matrix(y_true, y_pred):生成混淆矩阵,用于展示模型预测结果的分布情况。

posted @   涨涨涨张  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
历史上的今天:
2023-12-11 部署工件出错
点击右上角即可分享
微信分享提示