朴素贝叶斯分类器实现
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 分类器的效果更好
原博客链接:https://www.cnblogs.com/xpengp/