机器学习_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])
相关推荐
BJ_Bonree1 分钟前
聊点技术 | Bonree ONE 业务链路观测实战 支付成功率下降,问题究竟出在哪一环?
大数据·人工智能
Bode_20024 分钟前
TRIZ 理论知识体系与架构全景图
人工智能
richard_first6 分钟前
第21章 训练一个简单的 GPT
人工智能·gpt·深度学习
FPGA信号处理8 分钟前
【 凸优化】第六讲:求解器与支持向量机
算法·机器学习·支持向量机
专注仿真10 分钟前
支持向量机(SVM)算法详解与代码实例
算法·机器学习·支持向量机
Highcharts.js14 分钟前
Highcharts 集成到 React 或 Vue 项目中时,如何高效地使用 TypeScript技巧?
vue.js·人工智能·react.js·typescript·前端框架·highcharts
小lo想吃棒棒糖16 分钟前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能
收放扳机16 分钟前
PCB自动化整机“末端执行器”与“机械手负载”的匹配选型
人工智能·科技·自动化·制造·pcb工艺
IT_陈寒18 分钟前
JavaScript实战技巧总结:深挖数组遍历的性能陷阱与实战解法
前端·人工智能·后端
weixin_3077791323 分钟前
RAG 级联失效分析——面试中的错误归因艺术
人工智能·python·面试·职场和发展