一.数据集下载地址SMSSpamCollection.txt
二.打开下载的.txt文件,可以看到数据集长这样,标签(ham和spam)与文本之间的分隔符是一个tab键,也就是‘\t’
三.首先用pd.read_csv函数读取该数据集时要注意设置分隔符sep=’\t’,然后用replace方法把“ham”标签用0替代,“spam”用1替代,方便看预测结果。
接下来就是用词袋方法处理文本信息,也就是统计一大段话里的不同单词的出现次数,最后得到一个频率矩阵,矩阵的行就是数据集里的每一行短信,矩阵的列就是短信里每个单词,元素值就是该单词的出现频率。可以用sklearn库提供的CountVectorizer()方法实现词袋处理。
四.将训练数据和测试数据输入到词袋模型里,就可以得到对应的频率矩阵。最后分别运用sklearn提供的伯努利模型和多项式模型对垃圾短信进行分类。两个模型返回的预测结果都是长度为(我设置的训练集占比为80%),类型为ndarray的列表。最终,多项式模型的R分值为0.,伯努利模型的R分值为0.。二者的预测结果几乎是相同的。
五.完整代码