机器学习中的朴素贝叶斯
一、贝叶斯定理 + 朴素假设
朴素贝叶斯是一种基于概率统计的监督学习算法,核心源于贝叶斯定理:
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(x∣y)。alpha=1,这是拉普拉斯平滑系数,用于解决零概率问题。

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)。
四、总结一下
朴素贝叶斯是一种基于贝叶斯定理与特征条件独立假设的分类器,其核心优势在于训练极其高效,仅通过统计先验和条件概率即可完成建模,对小规模数据集和多分类任务有很好的支持。
然而,其“朴素”的独立性假设在现实中往往难以满足,可能导致性能下降;同时它对数据输入形式敏感(如要求离散计数),且输出的概率估计常因独立性假设的偏离而趋于极端(接近0或1),不够校准。
更多推荐
所有评论(0)