# 导入所需的库
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score, KFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, make_scorer
# 1. 利用 pandas 从本地读取 iris 数据集
try:
local_iris_data = pd.read_csv('iris.csv')
print("本地读取的 iris 数据集:")
print(local_iris_data.head())
except FileNotFoundError:
print("无法找到本地的 iris 数据集文件,请确保文件名和路径正确。")
# 2. 从 scikit-learn 直接加载 iris 数据集
iris = load_iris()
X, y = iris.data, iris.target
print("\n从 scikit-learn 直接加载的 iris 数据集:")
print("特征数据(前5行):\n", X[:5])
print("标签数据(前5行):\n", y[:5])
# 3. 五折交叉验证进行模型训练
kf = KFold(n_splits=5, shuffle=True, random_state=42)
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)
# 自定义评估指标的计算
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_val_score(rf_classifier, X, y, cv=kf, scoring='accuracy')
print("\n交叉验证的准确度结果:", cv_results)
print("平均准确度:", np.mean(cv_results))
# 计算并输出准确度、精度、召回率和 F1 值
from sklearn.model_selection import cross_validate
results = cross_validate(rf_classifier, X, y, cv=kf, scoring=scoring)
print("\n交叉验证的评估结果:")
print("准确度:", np.mean(results['test_accuracy']))
print("精度:", np.mean(results['test_precision']))
print("召回率:", np.mean(results['test_recall']))
print("F1 值:", np.mean(results['test_f1']))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人