机器学习中的朴素贝叶斯
一、贝叶斯定理 + 朴素假设
朴素贝叶斯是一种基于概率统计的监督学习算法,核心源于贝叶斯定理:
P(y∣X)=P(y)⋅P(X∣y)P(X)P(y∣X)=P(X)P(y)⋅P(X∣y)
P(y∣X):在特征 X条件下,属于类别 y的概率。
P(y):类别为y的概率。
P(X∣y):即在类别y下特征X出现的概率。
朴素贝叶斯就是一个基于贝叶斯公式、假设特征独立的概率分类器。
二、代码模型的训练
1. 数据加载,代码为pd.read_csv("iris.csv"),作用为读取特征和标签。
2. 特征工程,代码为MinMaxScaler+*100+astype(int),作用为将连续特征转为非负整数,满足MultinomialNB的输入要求。
3.划分数据集,代码为train_test_split(test_size=0.2, random_state=100),作用为80%训练,20%测试,固定随机种子保证可复现。
4.模型训练,代码为MultinomialNB(alpha=1).fit(X_train, y_train),作用为让模型“吃透”训练数据,计算出朴素贝叶斯公式所需的所有关键概率参数,生成一个训练好的分类器对象。算出各类别的基本盘 P(y),并且算出各类别下各特征值的分布规律 P(xi∣y)。
5.模型评估,代码为classification_report+confusion_matrix,作用为输出精确率、召回率、F1值,并绘制混淆矩阵可视化。
6. 准确率输出,代码为classifier.score(X_test, y_test),作用为直接输出模型在测试集上的整体精度。
三、朴素贝叶斯的优缺点
1.优点:
训练极快:只需计算概率表,没有迭代优化过程。
对小数据集友好:Iris仅150条样本,NB依然表现稳定。
多分类天然支持:Iris有3种花,NB能直接输出各类别概率。
2.缺点:
强独立性假设:鸢尾花的4个特征其实有相关性,理论上用决策树或KNN可能更好。
对数据预处理敏感:若不做整数转换,MultinomialNB会直接报错。
概率校准可能不准确:输出概率常偏向极端(0或1)。