目录

1.朴素贝叶斯分类算法相关的统计学知识

2.朴素贝叶斯分类器

3.朴素贝叶斯分类器python实现

(1)调用sklearn库,需要安装

(2)实例1(查看数据的分布情况和数据格式)

(3)实例2(用朴素贝叶斯分类算法对整个breast cancer数据集进行分析,训练得到判断肿瘤是良性还是恶性的模型)

1.查看数据集的特征和标签

2.通过train_test_split()将整个数据集划分为训练集和测试集并查看数据形态

3.用高斯朴素贝叶斯分类算法对训练数据集进行拟合

4.完整高斯朴素贝叶斯分类算法训练breast cancer数据集代码


1.朴素贝叶斯分类算法相关的统计学知识

(1)条件独立公式:P(X,Y)=P(X)*P(Y)

(2)条件概率公式:P(X|Y)=P(X,Y)/P(Y),P(Y|X)=P(X,Y)/P(X)

(3)全概率公式:

(4)贝叶斯公式:

2.朴素贝叶斯分类器

基本思路:假设待分类的样本服从某一种概率分布,首先通过已分类好的样本数据估计某未分类样本的先验概率,然后利用贝叶斯公式计算出未分类样本的后验概率(即预测该样本属于某一类的概率),最后选择具有最大后验概率的类别作为该未分类样本所属的类别。

3.朴素贝叶斯分类器python实现

(1)调用sklearn库,需要安装

数据集说明:使用sklearn库中自带的数据集breast cancer(乳腺癌患者数据:共有569个实例,包括212个良性实例,357个恶性实例。每个实例包括30个属性值,每个属性值取自乳房硬块的细针穿刺数字影像,包括10种特征的平均值和方差。而这10种特征又包括半径、周长和面积等)

(2)实例1(查看数据的分布情况和数据格式)

实例代码:

import pandas as pd
from sklearn.datasets import load_breast_cancercancer=load_breast_cancer()
cancerdf=pd.DataFrame(cancer.data,columns=cancer.feature_names)
print(cancerdf.head()) # head()默认显示前5行数据

  运行结果(显示前5行数据):

(3)实例2(用朴素贝叶斯分类算法对整个breast cancer数据集进行分析,训练得到判断肿瘤是良性还是恶性的模型)

1.查看数据集的特征和标签

代码:

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix
from matplotlib import pyplot as plt
import seaborn as snscancer=load_breast_cancer()
print("肿瘤的分类:",cancer['target_names'])
print("肿瘤的分类:",cancer['feature_names'])

运行结果:

 2.通过train_test_split()将整个数据集划分为训练集和测试集并查看数据形态

代码:

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix
from matplotlib import pyplot as plt
import seaborn as sns
cancer=load_breast_cancer()
x,y=cancer.data,cancer.target
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=3)
print(x_train.shape)# 查看训练集数据形态
print(x_test.shape)# 查看测试集数据形态

运行结果:

 3.用高斯朴素贝叶斯分类算法对训练数据集进行拟合

代码:

clf=GaussianNB()
clf.fit(x_train,y_train)#对训练集进行拟合
print(clf.score(x_train,y_train))
print(clf.score(x_test,y_test))

运行结果:

(可以看到,测试集准确率高达0.947)

 4.绘制混淆矩阵

代码:

pred=clf.predict(x_test)
cm=confusion_matrix(pred,y_test)
plt.figure(dpi=300)
sns.heatmap(cm,cmap=sns.color_palette("Blues"),annot=True,fmt='d')
plt.xlabel('实际类别')
plt.ylabel('预测类别')
plt.show()    

运行结果:

4.完整高斯朴素贝叶斯分类算法训练breast cancer数据集代码

对以上的代码进行函数封装并且添加一个将混淆矩阵可视化的函数代码,就可以得到完整训练过程的代码,如下:

(以下代码,是博主按照个人需求写的,也可以根据个人需求进行调整)

import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix
from matplotlib import pyplot as plt
import seaborn as sns#训练模型函数
def model_fit(x_train,y_train,x_test,y_test):clf=GaussianNB()clf.fit(x_train,y_train)#对训练集进行拟合print(clf.score(x_train,y_train))print(clf.score(x_test,y_test))pred=clf.predict(x_test)cm=confusion_matrix(pred,y_test)return cm#混淆矩阵可视化
def matplotlib_show(cm):plt.figure(dpi=100)#设置窗口大小(分辨率)plt.title('Confusion Matrix')labels = ['a', 'b', 'c', 'd']tick_marks = np.arange(len(labels))plt.xticks(tick_marks, labels)plt.yticks(tick_marks, labels)sns.heatmap(cm, cmap=sns.color_palette("Blues"), annot=True, fmt='d')plt.ylabel('real_type')#x坐标为实际类别plt.xlabel('pred_type')#y坐标为预测类别plt.show()if __name__ == '__main__':cancer = load_breast_cancer()x, y = cancer.data, cancer.targetx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=3)cm=model_fit(x_train,y_train,x_test,y_test)matplotlib_show(cm)

运行结果:

数据挖掘学习——朴素贝叶斯分类算法beast cancer实战相关推荐

  1. 数据挖掘 | 判别分析 +朴素贝叶斯分类算法

    本节记录一下由贝叶斯定理延伸出来的几种预测性建模的方法,主要为线性判别分析(一次,二次),朴素贝叶斯(稍稍提一下贝叶斯网络) 1. 判别分析 判别分析适用于自变量连续,因变量为分类型的情形: 设因变量 ...

  2. 机器学习算法系列(十三)-朴素贝叶斯分类算法(Naive Bayes Classifier Algorithm)

    阅读本文需要的背景知识点:一丢丢编程知识 一.引言   前面几节介绍了一类分类算法--线性判别分析.二次判别分析,接下来介绍另一类分类算法--朴素贝叶斯分类算法1 (Naive Bayes Class ...

  3. 数据挖掘:基于朴素贝叶斯分类算法的文本分类实践

    前言: 如果你想对一个陌生的文本进行分类处理,例如新闻.游戏或是编程相关类别.那么贝叶斯分类算法应该正是你所要找的了.贝叶斯分类算法是统计学中的一种分类方法,它利用概率论中的贝叶斯公式进行扩展.所以, ...

  4. scikit-learn学习之贝叶斯分类算法

    版权声明:<-- 用心写好你的每一篇文章,转载请注明出处@http://blog.csdn.net/gamer_gyt <-- 目录(?)[+] ===================== ...

  5. 【机器学习原理】朴素贝叶斯分类算法

    文章目录 一.朴素贝叶斯公式 1. 从统计角度看分类问题 2. 贝叶斯公式的基本思想 贝叶斯的基本逻辑 3. 用贝叶斯公式进行选择 贝叶斯版的预测未来 二.朴素贝叶斯分类的算法原理 1. 朴素贝叶斯分 ...

  6. 基于python的贝叶斯分类算法预测_python机器学习:朴素贝叶斯分类算法

    大数据挖掘DT机器学习  公众号: datayx 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这 ...

  7. 分类与监督学习,朴素贝叶斯分类算法

    分类与监督学习,朴素贝叶斯分类算法 1.理解分类与监督学习.聚类与无监督学习. (1) 简述分类与聚类的联系与区别. 分类是按照某种标准给对象贴标签,再根据标签来区分归类. 聚类是指事先没有" ...

  8. 二维特征分类的基础_带你搞懂朴素贝叶斯分类算法

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们学习会上讲到 ...

  9. 朴素贝叶斯分类算法--终极奥义

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们学习会上讲到 ...

最新文章

  1. 内存Cookie和硬盘Cookie
  2. Vue.js-Day06-PM【项目实战(附带 完整项目源码)-day01-pm:轮播组件(使用、安装依赖、具体操作过程)、favicon详细制作】
  3. android 两足机器人,基于Android的双足机器人语音控制系统研究
  4. 上传github代码
  5. Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.
  6. bzoj1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
  7. php内容模型概念,方便新建各种类型表
  8. 去除本机利用ssh协议登陆远程机器的痕迹
  9. Linux ALSA 音频系统:物理链路篇
  10. 0x800704cf 共享打印机_0x800704cF,详细教您Win7访问共享时提示错误0x800704cf怎么办
  11. Mac 上如何使用burpsuite(以谷歌浏览器为例)
  12. 动能方案|RFID动物耳标解决方案
  13. Java 下载多个文件打成zip压缩包
  14. 数据分析与爬虫实战视频——学习笔记(四)(糗事百科、天善智能、当当商城、sql输出)
  15. 深夜切题——Doubles
  16. poi 宋体_(六)POI-操作Excel的poi的字体设置
  17. matlab 显示绘图工具和停靠图形,4 7 交互式绘图工具ppt
  18. python基础之内置成员和魔法函数(16)
  19. 微博粉丝精灵_王晓晨微博粉丝破千万 走心独白致谢陪伴
  20. root大师电脑版 v1.7.6.6640 官网最新版

热门文章

  1. 微信小程序 商品布局 宫格、列表、大图模式切换
  2. apfs扩容_向APFS文件系统转进:iOS 10.3为iPhone变相扩容存储空间
  3. python生成器和迭代器详解
  4. 微信正测试新功能:同一个手机号可注册两个微信号
  5. 11、AOP(重点)
  6. oracle stalestats_dbms_stats.gather_schema_stats的GATHER STALE选项
  7. 虚拟机联网图标丢失,连不上网的问题
  8. ArcGIS Pro 制作一张立体地形图
  9. 基于 Node.js 爬虫的数据 API,搭建一套属于自己的 API 数据
  10. Linux--远程访问及控制(SSH+TCP Wrappers配置各种机制验证)