机器学习_9、朴素贝叶斯

朴素贝叶斯解决鸢尾花数据集问题

复制代码
#高斯朴素贝叶斯分类
#coding=utf-8
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
import numpy as np

# 导入数据集,并查看数据特征分布
data = load_iris()
#print(data.keys())
#print("目标数据类别:",data["target_names"])
# 提取特征数据和分类标签
X, y = data["data"], data["target"]

# 划分训练集与测试集
# 让参数stratify=y,使测试集与训练集中各类别样本数量的比例与原数据集中
# 各类别的样本数量比例相同
X_train, X_test, y_train, y_test = \
    train_test_split(X,y,test_size=0.2,stratify=y,random_state=1)

# 创建高斯朴素贝叶斯对象
model = GaussianNB()
# sklearn库支持三种朴素贝叶斯,分别是高斯朴素贝叶斯,多项式朴素贝叶斯,伯努利朴素贝叶斯
#高斯朴素贝叶斯GaussianNB,假设标签特征数据都服从高斯分布(正态分布)
#多项式朴素贝叶斯MultinomialNB,假设特征是由一个简单多项式分布生成,即多次重复实验。
#伯努利朴素贝叶斯(BernoulliNB),假设特征的先验概率为二元伯努利分布,即0和1,适用于二元离散特征
# 用训练集数据训练模型
model.fit(X_train, y_train)

# 性能评估
print("训练集准确率:", model.score(X_train, y_train))
print("测试集准确率:", model.score(X_test, y_test))

# 构建一个样本特征数据的数组
X_new = np.array([[4.5, 2.8, 2.5, 0.3]])
# 预测新数据的分类标签
class_code = model.predict(X_new)
print("预测的分类标签:", class_code)
print("预测的分类名称:", data["target_names"][class_code])

# 也可以查看属于各类别的概率
code_prob = model.predict_proba(X_new)
print("预测样本属于各标签的概率:\n", code_prob)
# 概率最大值的位置索引,axis=1求每一行的最大值索引
maxLoc = code_prob.argmax(axis=1)
print("每个样本预测标签最大概率值所在的标签序号:", maxLoc)
# 根据标签位置获取标签值(代码)
label = model.classes_[maxLoc]
print("预测的标签值:",label)
# 标签对应的鸢尾花种类
print("预测的鸢尾花种类名称:",data.target_names[label])
相关推荐
小真zzz4 小时前
2026年GEO监测工具深度横评:谁在AI时代守护品牌心智?
人工智能·百度·重构
ZFSS4 小时前
Localization Translate API 集成与使用指南
java·服务器·数据库·人工智能·mysql·ai编程
天行健,君子而铎4 小时前
合规对标·低误报漏报·稳定运行——知源-AI数据分类分级系统金融行业解决方案
人工智能·金融·分类
视觉&物联智能4 小时前
【杂谈】-游戏生成数据:人工智能训练中极易被低估的核心资源
人工智能·游戏·ai·chatgpt·openai·agi·deepseek
扫地的小何尚5 小时前
NVIDIA Vera Rubin 平台如何解决 Agentic AI 的 Scale-up 难题
大数据·人工智能·机器学习
莞凰5 小时前
昇腾CANN的“灵脉根基“:Runtime仓库探秘
android·人工智能·transformer
5201-5 小时前
ops-conv:卷积算子从 CPU 到昇腾 NPU 的优化之路
人工智能·深度学习
HIT_Weston6 小时前
92、【Agent】【OpenCode】edit 工具提示词
人工智能·agent·opencode
Shan12056 小时前
机器学习评价指标之基础指标与综合指标
人工智能·机器学习
硅谷秋水6 小时前
智体Harness工程:综述(下)
人工智能·深度学习·机器学习·语言模型