12行python代码实现的垃圾邮件分类器
让我们使用朴素贝叶斯在Python中创建一个简单的垃圾邮件分类器。朴素贝叶斯是基于贝叶斯定理的分类器集合。它们是朴素贝叶斯高斯朴素贝叶斯,多项式朴素贝叶斯和伯努利朴素贝叶斯中的三类分类器。
所需的依赖性是
Pandas :用于提取数据。
Scikit Learn:适用于机器学习算法。
下面给出的图片显示了我们的训练数据(https://github.com/imHarin/SpamClassifier/blob/master/training_data/sms_spam.csv)。它有两列第一列,标记消息是否是垃圾邮件。
多项式和伯努利朴素贝叶斯是用于文本分类在这里我们将使用多项朴素贝叶斯。
导入库
import pandas
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
CountVecorizer将消息转换为稀疏矩阵。
加载数据。
training_data =“training_data / sms_spam.csv”
data = pandas.read_csv(training_data)
现在创建分类器和CountVectorizer的实例,并将训练数据转换为矢量形式并训练我们的模型
clf = MultinomialNB()
vectorizer = CountVectorizer()
messages = vectorizer.fit_transform(data["text"].values)
targets = data["type"].values
clf.fit(message,targets)
fit方法将训练我们的模型,消息是一个包含向量形式消息的数组,并且目标包含相应的类。
测试模型
print(clf.predict(vectorizer.transform(["hiii,how are u"])))
输出将是
['ham']