朴素贝叶斯法(Naive Bayes)
来源:互联网 发布:小游戏制作软件下载 编辑:程序博客网 时间:2024/06/05 01:55
综述
朴素贝叶斯法是基于贝叶斯定理与条件独立假设的分类方法。
首先要知道一些基本统计学的知识:
1、条件概率
2、联合概率
3、独立性
4、独立同分布
5、贝叶斯定理
定理公式不好敲,这里偷懒就不写了,查看概率论的书,就知道了。
代码实现
版本1:DIY版本
# coding:utf-8import numpy as npX = np.array([[1,1],[1,2],[1,2],[1,1],[1,1],[2,1],[2,2],[2,2],[2,3],[2,3],[3,3],[3,2],[3,2],[3,3],[3,3]]) # print(np.shape(X))Y = np.array([-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1])input_x = np.array([2,1])class NB(object): def __init__(self,X,Y): self.X = X self.Y = Y self.N = len(Y) #实例的个数 self.K = len(X[0]) #特征的维数 self.M = len(set(self.Y)) #类别的个数 def cal_pri_prb(self): # 计算先验概率 p_p = dict() #先验概率 p_n = dict() #记录频数 for y in set(self.Y): sum = 0 for y_i in self.Y: if y==y_i: sum = sum+1 else: pass p_p[y] = sum/self.N p_n[y] = sum return p_p,p_n def cond_prb(self,p_p,p_n): # 计算条件概率 p = list() #用来存放条件概率乘积 for y in set(self.Y): # y=(1,-1) p1 =1 for j in range(self.K): # j = 0,1 sum = 0 for i,x in enumerate(self.X): if (x[j]==input_x[j] and self.Y[i]==y): sum = sum+1 pred = sum/p_n[y] p1 = p1*pred p.append(p1) y_result = dict() for i,y in enumerate(list(set(self.Y))): y_result[y] = p_p[y]*p[i] result = sorted(y_result.values())[-1] return y_result,result def show_result(self,y_result,result): show_dict = {v:k for k,v in y_result.items()} print("预测结果为",show_dict[result])nb = NB(X,Y)p_p,p_n = nb.cal_pri_prb()y_result,result = nb.cond_prb(p_p,p_n)nb.show_result(y_result,result) >>>预测结果为 -1
版本2:使用sklearn版本
#coding:utf-8import numpy as npfrom sklearn.naive_bayes import GaussianNBX = np.array([[1,1],[1,2],[1,2],[1,1],[1,1],[2,1],[2,2],[2,2],[2,3],[2,3],[3,3],[3,2],[3,2],[3,3],[3,3]]) Y = np.array([-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1])input_x = np.array([[2,1]])gnb = GaussianNB()y_pred = gnb.fit(X,Y).predict(input_x)print(y_pred) >>>[-1]
参考:《统计学习方法》–李航
阅读全文
0 0
- 朴素贝叶斯法naive Bayes
- 朴素贝叶斯法(Naive Bayes)
- 深入浅出朴素贝叶斯法(Naive Bayes)
- 机器学习 - 朴素贝叶斯法(Naive Bayes)
- <统计学习方法>3 朴素贝叶斯法(Naive Bayes)
- Naive Bayes朴素贝叶斯
- 朴素贝叶斯(Naive Bayes)
- 朴素贝叶斯(naive bayes)
- 朴素贝叶斯(naive bayes)
- 2.朴素贝叶斯Naive Bayes
- 朴素贝叶斯(Naive-Bayes)介绍
- 朴素贝叶斯(naive Bayes)
- Naive Bayes 朴素贝叶斯算法
- 朴素贝叶斯(Naive Bayes)
- 朴素贝叶斯入门---Naive Bayes
- 朴素贝叶斯(Naive Bayes)
- Naive Bayes(朴素贝叶斯)
- 朴素贝叶斯(Naive Bayes),“Naive”在何处?
- day20进程、线程
- Linux系统下 SSR(python版本)的使用
- Java虚拟机JVM对自己的内存空间划分
- Lucene之索引查看工具Luke-yellowcong
- Ubuntu配置多python版本环境
- 朴素贝叶斯法(Naive Bayes)
- Hello World!!!!
- Linux下V4L2一个调试问题方法可以改参数
- 【Scikit-Learn 中文文档】18 高斯混合模型
- 2017-12-2 A星课程-单例模式遇到问题
- LintCode-连续子数组和
- RadioButton获取值和赋值,使用js
- java类型转换代码测试总结
- 河南超算硬件建设情况调查