# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_validate
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score, classification_report
# Step 1: 加载 iris 数据集并分割为训练集和测试集
iris = load_iris() # 加载数据集
X, y = iris.data, iris.target # 提取特征和标签
# 留出法分割数据集,测试集占 1/3,保证同分布
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)
# Step 2: 初始化并训练朴素贝叶斯模型
gnb = GaussianNB() # 初始化 GaussianNB 模型
gnb.fit(X_train, y_train) # 使用训练集训练模型
# Step 3: 使用五折交叉验证评估模型性能
# 定义评估指标
scoring = {
'accuracy': make_scorer(accuracy_score),
'precision_macro': make_scorer(precision_score, average='macro'),
'recall_macro': make_scorer(recall_score, average='macro'),
'f1_macro': make_scorer(f1_score, average='macro')
}
# 五折交叉验证
cv_results = cross_validate(gnb, X_train, y_train, cv=5, scoring=scoring)
# 打印交叉验证结果
print("五折交叉验证结果:")
for metric in scoring.keys():
mean = cv_results['test_' + metric].mean()
std = cv_results['test_' + metric].std()
print(f"{metric}: {mean:.4f} ± {std:.4f}")
# Step 4: 测试集评估模型性能
# 使用测试集进行预测
y_pred = gnb.predict(X_test)
# 输出分类报告
print("\n测试集性能报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人