一、实验内容
本实验通过实现钞票真伪判别案例来展开学习朴素贝叶斯分类器的原理及应用。
本实验的主要技能点:
1、 朴素贝叶斯分类器模型的构建
2、 模型的评估与预测
3、 分类概率的输出
二、实验目标
1)学习朴素贝叶斯算法构建识别模型的方法
2)掌握scikit-learn中朴素贝叶斯算法的调用方法
3)理解朴素贝叶斯分类器的原理
4)熟悉分类概率输出方法
三、实验环境
- 操作系统:Ubuntu16
- 工具软件:Anaconda3 2022、Python3.7
- 硬件环境:无特殊要求
- 核心库:
- numpy 1.19.4
- ipython 7.16.2
- scikit-learn 0.24.2
四、实验原理
4.1 数据集
钞票数据集包括1371行、5列,前四列是钞票的四个光学图像指标(即样本的特征),最后一列是钞票的真伪(0-真币,1-假币,即样本的标签)。因为训练数据是有标签的,因此本实验是监督学习中的一个分类问题。
本任务涉及以下几个环节:
a)加载、查看数据集
b)获取样本的特征数组和标签数组
d)将数据集拆分为训练集和测试集
e)构建模型拟合数据、评估并做出预测
4.2 分割训练集和测试集
sklearn.model_selection.train_test_split(train_data, train_target, test_size=0.25, random_state=0)
在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”,从 sklearn.model_selection中调用train_test_split 函数 ,参数列表如下
- train_data:被划分的样本特征集
- train_target:被划分的样本标签
- test_size:如果是浮点数,在0-1之间,表示样本占比;如果是整数的话就是样本的数量
- random_state:是随机数的种子
- 若为None时,每次生成的数据都是随机,可能不一样
- 若为整数时,每次生成的数据都相同
五、实验步骤
步骤一 加载、查看数据集
我们使用pandas读取数据集文件,增加列名。
from sklearn.naive_bayes import GaussianNB # 引入高斯朴素贝叶斯分类器
from sklearn.model_selection import train_test_split # 数据集拆分
from IPython.display import display # 显示
import pandas as pd
import numpy as np
# 读取钞票数据文件
banknote = pd.read_csv('../dataset/banknote.csv')
# 添加列名
banknote