##朴素贝叶斯
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
#1.导入数据
#data = pd.read_csv(’’)
#2.数据预处理
#略,最终生成x_train,y_train,x_test
#此处导入鸢尾花数据
x_train, y_train = load_iris(return_X_y=True)
#3.模型训练(此处用高斯朴素贝叶斯,假设变量服从正态分布)
clf = GaussianNB()
clf.fit(x_train, y_train)
#4.模型预测
#测试数据暂用训练数据
x_test = x_train[:2, :]
y_predict = clf.predict(x_test)
print(y_predict)
#参数列表与调参方法
高斯贝叶斯:先验为高斯分布的朴素贝叶斯
#GaussianNB(priors=None, var_smoothing=1e-09)
priors:类的先验概率。可以指定。默认为None,即由数据计算。
var_smoothing:所有要素的最大方差的部分,添加到计算稳定性的方差中。
多项式贝叶斯;先验为多项式的分布的朴素贝叶斯
#MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
alpha : float, optional (default=1.0),平滑参数,0为不平滑,默认1
fit_prior : boolean, optional (default=True),是否学习先验概率,默认为True,如果否则用统一的值
class_prior : array-like, size (n_classes,), optional (default=None)类的先验概率。可以指定。默认为None,即由数据计算。
补充朴素贝叶斯:实现了多项朴素贝叶斯(CNB)算法。CNB是标准多项式朴素贝叶斯(MNB)算法的一种改进,特别适用于不平衡数据集。
#ComplementNB(alpha=1.0, fit_prior=True, class_prior=None, norm=False)
alpha : float, optional (default=1.0),平滑参数,0为不平滑,默认1
fit_prior : boolean, optional (default=True),是否学习先验概率,默认为True,如果否则用统一的值
class_prior : array-like, size (n_classes,), optional (default=None)类的先验概率。可以指定。默认为None,即由数据计算。
norm : boolean, optional (default=False),是否执行权重的第二归一化。默认行为反映了Mahout和Weka中的实现,这些实现不遵循本文表9中描述的完整算法。
伯努利贝叶斯:先验为伯努利分布的朴素贝叶斯,适用于样本很稀松的二元离散值或很稀松的多元离散值情况
#BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
alpha : float, optional (default=1.0),平滑参数,0为不平滑,默认1
binarize : float or None, optional (default=0.0)样本特征的二值化(映射到布尔值)的阈值。如果为None,则假定输入已包含二进制向量。
fit_prior : boolean, optional (default=True),是否学习先验概率,默认为True,如果否则用统一的值
class_prior : array-like, size (n_classes,), optional (default=None)类的先验概率。可以指定。默认为None,即由数据计算。