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):生成混淆矩阵,用于展示模型预测结果的分布情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2023-12-11 部署工件出错