4. 朴素贝叶斯算法
 
4.1 什么是朴素贝叶斯分类方法
 根据公式,分母为0,但是公式为朴素贝叶斯, 朴素 的意思是,特征与特征之间是相互独立的。
4.2 概率基础
已知小明是产品经理,体重超重,是否会被女神喜欢,二分类问题。
4.3 联合概率、条件概率与相互独立
 案例1   应用场景: 文本分类 单词作为特征
案例2: 为了避免概率为0,引入拉普拉斯平滑系数 

4.4 API

4.5 案例:20类新闻分类
1)获取数据 2)划分数据集 3)特征工程:文本特征抽取 4)朴素贝叶斯预估器流程 5)模型评估
from sklearn.datasets import fetch_20newsgroups, load_files
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
import pandas as pd
"""
朴素贝叶斯算法: 朴素: 假设特征和特征之间是相互独立的
朴素贝叶斯算法经常用于文本分类, 因为文章转换成机器学习算法识别的数据是以单词为特征的
学习算法要点包括但不限于拉普拉斯平滑系数,朴素贝叶斯, 简单概率论
"""
def load_data():
all_data = fetch_20newsgroups(subset="all")
x_train, x_test, y_train, y_test = \
train_test_split(all_data.data, all_data.target, test_size=0.2, random_state=22)
transfer = TfidfVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
return x_train, x_test, y_train, y_test
def naive_bayes_test():
x_train, x_test, y_train, y_test = load_data()
estimator = MultinomialNB()
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
print("预测值为:", y_predict, "\n真实值为:", y_test, "\n比较结果为:", y_test == y_predict)
score = estimator.score(x_test, y_test)
print("准确率为: ", score)
return None
if __name__ == '__main__':
naive_bayes_test()
4.6 朴素贝叶斯算法总结

|