机器学习(朴素贝叶斯)

参考博文:https://www.cnblogs.com/zhangfengxian/p/10614608.html
一、基于概率论的分类方法:朴素贝叶斯(常用于文本分类)
常用公式
1.条件概率公式:其中P(AB)为联合概率,如果A、B相互独立P(AB)=P(A)P(B)
在这里插入图片描述
在这里插入图片描述
2.贝叶斯公式:其中在这里插入图片描述
为似然函数
在这里插入图片描述
最大似然估计(maximum likelihood estimation ,MLE):
在这里插入图片描述
在这里插入图片描述
3.拉普拉斯平滑系数:
目的:防止计算出的分类概率为0
4.文本分类中朴素贝叶斯公式:
在这里插入图片描述
在这里插入图片描述
P(娱乐|影院,支付宝,云计算) =P(影院,支付宝,云计算|娱乐)P(娱乐) =P(影院|娱乐)*P(支付宝|娱乐)P(云计算|娱乐)P(娱乐)=)=(56+1/121+4)(15+1/121+4)(0+1/121+14)(60/90) = 0.00002
用到大数定理:概率=频率
二、R语言中朴素贝叶斯在文档分类中的应用
参考:https://www.cnblogs.com/wxyz94/p/8976407.html
接口:包:e1071 中的naiveBayes
在这里插入图片描述

setwd("D:\\")
x_train=read.csv("sms_train.csv")
x_train=as.matrix(x_train)
head(x_train)
str(x_train)
x_test=read.csv("sms_test.csv")
x_test=as.matrix(x_test)
y_train=read.csv("sms_train_labels.csv")
y_train=as.matrix(y_train)#数据框不支持,必须转换为矩阵
y_test=read.csv("sms_test_labels.csv")
y_test=as.matrix(y_test)
library(e1071)
?naiveBayes

model=naiveBayes(x =x_train,y=y_train,laplace = 1 )
y_predict <- predict(model,x_test)
library(gmodels)
CrossTable(y_predict,y_test,prop.chisq = FALSE,prop.t = FALSE,dnn=c(predicted,actual))
rm(list=ls())

三、python 代码:
多项式朴素贝叶斯接口:•sklearn.naive_bayes.MultinomialNB(alpha = 1.0)◦朴素贝叶斯分类
◦alpha:拉普拉斯平滑系数

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction  import DictVectorizer
import pandas as pd
class Naive:
    def naive_classifier(self):
        x_train=pd.read_csv("D:\\sms_train.csv")
        x_test=pd.read_csv("D:\\sms_test.csv")
        y_train=pd.read_csv("D:\\sms_train_labels.csv")
        y_test=pd.read_csv("D:\\sms_test_labels.csv")
        #one-hot 编码
        # dict = DictVectorizer(sparse=False)
        # x_train=dict.fit_transform(x_train)
        print(x_train)
        pass

if __name__=="__main__":
    naive=Naive()
    naive.naive_classifier()

四、面试题汇总:
朴素贝叶斯为什么朴素?
它们相互独立,这就是他的朴素之处。
朴素对应英语单词naive,单纯的意思,所以也可以理解为很天真单纯的估计(把数据中的每个特征看作独立分布)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值