分为以下几个步骤:
- 用Python创建朴素贝叶斯模型;
- 使用朴素贝叶斯模型对垃圾邮件分类;
- 把文本文件变成词向量
- 评价朴素贝叶斯模型的分类效果。
- 把给定的数据集message.csv拆分成训练集和测试集,使用sklearn.naive_bayes.MultinomialNB类创建一个朴素贝叶斯模型,使用训练数据训练出一个预测模型,然后用预测模型对测试集中数据进行分类,评价模型的分类效果。
- message.csv数据集中包含大量的短信,每行数据包括2个字段:短信内容,短信类别(1或者0),短信类别为1的是垃圾邮件。
注意:
- 短信内容均为文本数据,需要使用词编码word2vec等将其转换为向量形式,
- 而且需要创建字典,这里使用哈工大提供的库。
- 如果自己数据集是脏数据比较多,需要先自己写一个过滤器,过滤掉已经知道的无意义的字符,比如符号*、#等等;
- 如果要训练一个特定领域的邮件分类器,可以自己自定义字典大小,理论上,字典越小,训练越快;
- 根据训练数据生成特征矩阵和分类矩阵,显示训练矩阵特征维度
- 根据测试数据生成特征矩阵和分类矩阵,显示测试矩阵特征维度
- 用训练集训练朴素贝叶斯模型
注意:
- 训练时候,直接采用sklearn提供的接口就可以,model.fit(x,y);
- 这里采用sklearn已经提供的naive_bayes.MultinomialNB类创建分类器,可以根据实际情况更换分类器或者自定义分类器。
- 用测试集进行预测
- 计算并显示模型的准确率、精度、召回率和F1值