继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

朴素贝叶斯完成新闻分类

昭昭li
关注TA
已关注
手记 115
粉丝 3868
获赞 281

700

朴素贝叶斯

朴素指的是"独立"
朴素贝叶斯是分类算法,可以给出每种类别发生的概率
善于计算几个独立事件同时发生的概率(文章分类)

关于独立事件(职业, 体型, 身高 各自独立)

样本编号职业体型身高女神的喜好
1程序员匀称很高喜欢
2产品很矮不看
3美术中等喜欢
4产品中等喜欢
5程序员很矮不看
6美术很高不看
  • 在女神喜欢的条件下, 职业是产品,并且身高很高, 并且体型匀称的概率?  1/27

P(产品, 很高, 匀称,|女神喜欢) = P(产品 | 女神喜欢) * P(很高 | 女神喜欢)* P( 匀称 | 女神喜欢 ) 
1/27 = (1/3)*(1/3)*(1/3)

朴素贝叶斯公式:

481

朴素贝叶斯


W为文章的特征组(特定文章中各词组出现的频率),C为特定的类别


700

上式等价式

  • 公式右侧

  • P(F1, F2, ... | C) = P(F1 | C) * P(F2 | C) * (F... | C),表示 特定类别下,特定词组出现的概率  的乘积

  • P(C), 表示 特定类别的文章, 在所有文章中出现的概率

  • P(F1, F2, F...) = P(F1) * P(F2) * P(F...) , 表示 特定词组在所有文章中出现的概率  的乘积

案例:为文章进行分类

from sklearn.naive_bayes import MultinomialNBfrom sklearn.datasets import fetch_20newsgroupsfrom sklearn.model_selection import train_test_splitfrom sklearn.feature_extraction.text import TfidfVectorizerdef naivebayes():
    # 获取数据集级
    news = fetch_20newsgroups(subset="all")    # 分割数据集
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)    # 进行tfidf特征抽取
    tf = TfidfVectorizer()
    x_train = tf.fit_transform(x_train)
    x_test = tf.transform(x_test)    # 通过朴素贝叶斯进行预测(拉普拉斯平滑系数为设置为1)
    mlb = MultinomialNB(alpha=1)
    mlb.fit(x_train, y_train)

    rate = mlb.score(x_test, y_test)
    print("预测准确率为:", rate)if __name__ == '__main__':
    naivebayes()

496

为文章进行分类


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP