机器学习_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])
相关推荐
IT_Beijing_BIT1 小时前
TensorFlow Keras
人工智能·tensorflow·keras
mit6.8241 小时前
[手机AI开发sdk] 安卓上的Linux环境
人工智能·智能手机
张较瘦_1 小时前
[论文阅读] AI + 教育 | AI赋能“三个课堂”的破局之道——具身认知与技术路径深度解读
论文阅读·人工智能
望十五江洋2 小时前
泊松分布的参数可加性
线性代数·机器学习·概率论
小雨青年2 小时前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
西西弗Sisyphus2 小时前
线性代数 - 初等矩阵
人工智能·线性代数·机器学习
weixin_429630262 小时前
第6章 支持向量机
算法·机器学习·支持向量机
王哈哈^_^2 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
仙人掌_lz2 小时前
Multi-Agent的编排模式总结/ Parlant和LangGraph差异对比
人工智能·ai·llm·原型模式·rag·智能体
背包客研究2 小时前
如何在机器学习中使用特征提取对表格数据进行处理
人工智能·机器学习