本文摘要
· 理论来源:【统计学习方法】第三四章 朴素贝叶斯
· 技术支持:pandas(读csv)、numpy、sklearn.naive_bayes.GaussianNB(高斯朴素贝叶斯模型)、sklearn.model_selection.cross_val_score(用于进行k折交叉验证)
· 代码目的:利用sklearn提供的高斯贝叶斯模型,对鸢尾花数据集进行学习+预测
作者:CSDN 征途黯然.
1、建议去了解一下,高斯、伯努利、多项式的朴素贝叶斯
2、突然间觉得sklearn很香,不想手撸模型了……
一、鸢尾花(iris)数据集
Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。
下载地址:点击此处
二、代码描述
1、首先,导入鸢尾花数据集
2、然后,数据预处理,数据集分成特征集和标签集
3、最后,实例化高斯贝叶斯模型,进行k折交叉检验,查看准确率
三、python代码(注释详细)
import pandas as pd import numpy as np from sklearn.naive_bayes import GaussianNB #导入模型 from sklearn.model_selection import cross_val_score # 导入数据集 df = pd.read_csv('./iris/Iris.csv', usecols=[1, 2, 3, 4, 5]) # pandas打印表格信息 # print(df.info()) # pandas查看数据集的头5条记录 # print(df.head()) """数据预处理""" # 取前100条数据中的:前4个特征+标签,便于训练 data = np.array(df.iloc[:150, [0, 1, 2, 3, -1]]) # 数据类型转换,为了后面的数学计算 X, y = data[:, :-1], data[:, -1] # 标签不需要是数字,字符串并不影响 # y = np.array([1 if i == 'Iris-setosa' else -1 for i in y]) """调用sklearn提供的kNN算法""" clf = GaussianNB() print(cross_val_score(clf, X, y, cv=5))