机器学习_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])
相关推荐
zone77391 小时前
001:LangChain的LCEL语法学习
人工智能·后端·面试
程序员鱼皮1 小时前
微软竟然出了免费的 AI 应用开发课?!我已经学上了
人工智能·程序员·ai编程
DevnullCoffe2 小时前
基于 OpenClaw + Pangolinfo API 的 Amazon 价格监控系统:架构设计与最佳实践
人工智能·架构
Baihai_IDP2 小时前
回头看 RLHF、PPO、DPO、GRPO 与 RLVR 的发展路径
人工智能·llm·强化学习
aristotle2 小时前
Openclow安装保姆级教程
人工智能·程序员
明明如月学长2 小时前
从 Subagent 到 Team:Claude Code 把 AI 协同玩明白了
人工智能
叶落阁主2 小时前
揭秘 Happy:如何实现 AI 编程助手输出的实时同步
人工智能·claude·vibecoding
王鑫星2 小时前
Anthropic 把自己发明的协议捐了:MCP 入驻 Linux 基金会,OpenAI 竟然也签了名
人工智能
陈少波AI应用笔记2 小时前
OpenClaw安全实测:4种攻击方式与防护指南
人工智能
小锋java12342 小时前
【技术专题】嵌入模型与Chroma向量数据库 - Chroma 集合查询操作
人工智能