2024.11.11

# 导入所需的库
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']))
posted @   我也不想的  阅读(2)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示