朴素贝叶斯分类器实现

1. 说明

  • 朴素贝叶斯分类器有三种:
    • GaussianNB: 适用于连续分布样本
    • MultinomialNB: 适用于多元离散值分布样本
    • BernoulliNB: 适用于二元离散值或者很稀疏的多元离散值分布样本
  • 使用sklearn库实现

2. Api

2.1 构建自定义样本

  • 为了简单,随便写几个样本
import numpy as np

X = np.array([[6, 4], [2, 3], [1, 4], [1, 3], [5, 5], [5, 2], [1, 2], [4, 1], [8, 2]])
Y = np.array([0, 1, 1, 1, 0, 2, 1, 2, 3])

X2 = np.array([[7, 3]])
Y2 = np.array([3])

2.2 GaussianNB

from sklearn.naive_bayes import GaussianNB
# 先验为高斯分布的朴素贝叶斯

gaussianNB = GaussianNB()
gaussianNB.fit(X, Y)
gaussianNB.partial_fit(X2, Y2) # 支持增量训练
# dataset_predict_y = gaussianNB.predict(X)

2.3 MultinomialNB

from sklearn.naive_bayes import MultinomialNB
# 先验为多项式分布的朴素贝叶斯

multinomialNB = MultinomialNB()
multinomialNB.fit(X, Y)
multinomialNB.partial_fit(X2, Y2)
# dataset_predict_y = gaussianNB.predict(X)

2.4 BernoulliNB

from sklearn.naive_bayes import BernoulliNB
# 先验为伯努利分布的朴素贝叶斯

bernoulliNB = BernoulliNB()
bernoulliNB.fit(X, Y)
bernoulliNB.partial_fit(X2, Y2)
# dataset_predict_y = gaussianNB.predict(X)

3. Note

  • 虽然每个分类器适用于不同数据分布的样本,但是大多数还是 GaussianNB 分类器的效果更好
posted @ 2020-11-25 15:39  落叶&不随风  阅读(269)  评论(0编辑  收藏  举报