文本分类,对短信进行二分类--->使用多项式分布朴素贝叶斯
import pandas as pd from sklearn.naive_bayes import MultinomialNB #转换数据,String串分析起来不方便,所以需要将字符串转进行转换 from sklearn.feature_extraction.text import TfidfVectorizer data = pd.read_table('../data/SMSSpamCollection',header = None) #处理数据 tf = TfidfVectorizer() display(data[1].shape,type(data[1])) X = tf.fit_transform(data[1]) y = data[0] mnb = MultinomialNB() #训练数据 mnb.fit(X,y) # 使用tf.transform把文本变成能处理的数字,生成一个测试数据 X_test = tf.transform(['07732584351 - Rodger Burns - MSG = We tried to call you re your reply to our sms for a free nokia mobile + free camcorder. Please call now 08000930705 for delivery tomorrow']) #预测数据 mnb.predict(X_test) #输出结果显示这是一条垃圾短信贝叶斯编写单词拼写器
需求:
argmaxc P(c|w) -> argmaxc P(w|c) P(c) / P(w)P(c), 文章中出现一个正确拼写词 c 的概率, 也就是说, 在英语文章中, c 出现的概率有多大
P(w|c), 在用户想键入 c 的情况下敲成 w 的概率. 因为这个是代表用户会以多大的概率把 c 敲错成 w