下面是详细讲解“Python编程之基于概率论的分类方法:朴素贝叶斯”的完整攻略。
1. 什么是朴素贝叶斯?
朴素贝叶斯是一种基于概率论的分类方法,它假设特征之间相独立,从而简化了计算。朴素贝叶斯分类器通常用于文本分类、垃圾邮件过滤、情感分析等领域。
2. Python实现朴素贝叶斯的方法
2.1 朴素贝叶斯分类器
下面是Python使用朴素贝叶斯分类器实现文本分类的示例:
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report
# 加载数据集
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)
# 特征提取
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)
# 训练模型
clf = MultinomialNB()
clf.fit(X_train_counts, twenty_train.target)
# 预测测试集
twenty_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)
X_test_counts = count_vect.transform(twenty_test.data)
predicted = clf.predict(X_test_counts)
# 输出分类报告
print(classification_report(twenty_test.target, predicted, target_names=twenty_test.target_names))
上述代码中,使用sklearn.datasets中的fetch_20newsgroups函数加载数据集,选择四个类别进行分类。使用sklearn.feature_extraction.text中的CountVectorizer函数进行特征提取,将文本转换为词频向量。使用sklearn.naive_bayes中的MultinomialNB函数训练朴素贝叶斯分类器。使用训练好的分类器对测试集进行预测,并使用sklearn.metrics中的classification_report函数输出分类报告。
2.2 高斯朴素贝叶斯分类器
下面是Python使用高斯朴素贝叶斯分类器实现鸢尾花分类的示例:
from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练模型
clf = GaussianNB()
clf.fit(X_train, y_train)
# 预测测试集
predicted = clf.predict(X_test)
# 输出分类报告
print(classification_report(y_test, predicted, target_names=iris.target_names))
上述代码中,使用sklearn.datasets中的load_iris函数加载鸢尾花数据集。使用sklearn.model_selection中的train_test_split函数将数据集划分为训练集和测试集。使用sklearn.naive_bayes中的GaussianNB函数训练高斯朴素贝叶斯分类器。使用训练好的分类器对测试集进行预测,并使用sklearn.metrics中的classification_report函数输出分类报告。
3. 总结
朴素贝叶斯是一种基于概率论的分类方法,它假设特征之间相互独立,从而简化了计算。在Python中,可以使用sklearn库中的朴素贝叶斯分类器实现文本分类、垃圾邮件过滤、情感分析等领域的应用。另外,还可以使用高斯朴素贝叶斯分类器实现鸢尾花分类等任务。