《机器学习核心算法》分类算法 - 朴素贝叶斯 MultinomialNB_multinomialnb()

朴素贝叶斯法(Naive Bayes model 简称 NBM )是基于「贝叶斯定理」与「特征条件独立假设」的分类方法。

「贝叶斯定理」:也叫贝叶斯公式,用来描述两个「条件概率」之间的关系。比如你看到一个人总是做好事,那这个人多半会是一个好人。
「特征条件独立假设」:为了解决「参数」成指数增长过多的问题,朴素贝叶斯在贝叶斯定理的基础上,假设特征的条件都是「相互独立」的。

1、朴素贝叶斯API

「多项式」模型的朴素贝叶斯分类器,用于具有「离散」特征的分类,比如文本分类的单词计数,需要整数特征计数。

sklearn.naive_bayes.MultinomialNB()

参数

  • alpha :(可选,浮点型)平滑参数,默认值为 1.0
  • force_alpha :(可选,布尔类型)默认值 False,如果为False且alpha小于1e-10,就将alpha设置为1e-10;如果为True,aplha保持不变;这是为了防止alpha太接近0而导致数值误差
  • fit_prior :(可选,布尔类型)是否学习先验概率,默认值 True,如果为False,就使用统一先验。

函数

  • MultinomialNB.fit( x_train,y_train ):接收训练集特征 和 训练集目标
  • MultinomialNB.predict( x_test ):接收测试集特征,返回数据的类标签
  • MultinomialNB.score(x_test, y_test):接收测试集特征 和 测试集目标,返回准确率。
  • MultinomialNB.get_params():获取接收的参数(alpha、fit_prior这种参数)
  • MultinomialNB.set_params():设置参数
  • MultinomialNB.partial_fit():增量测试,用于数据量太大不能一次装入内存的情况,

2、朴素贝叶斯算法实际应用

2.1、获取数据集

这里我们使用sklearn自带的「鸢尾花」数据集。

from sklearn import datasets

# 1、获取数据集
iris = datasets.load_iris()
print(iris.data)

输出:

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 ......
  [5.9 3.  5.1 1.8]]

2.2、划分数据集

接下来,我们对数据集进行「划分」,传入特征值和目标值,按照默认比例划分(25%测试集、75%训练集)

from sklearn import datasets
from sklearn import model_selection

# 1、获取数据集
iris = datasets.load_iris()
# 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
print('训练集特征值:', len(x_train))
print('测试集特征值:', len(x_test))
print('训练集目标值:', len(y_train))
print('测试集目标值:', len(y_test))

输出:

训练集特征值: 112
测试集特征值: 38
训练集目标值: 112
测试集目标值: 38

从结果可以看到,训练集划分了112组、测试集划分了38组,符合预期。

2.3、特征归一化

接下来,我们对特征值进行「归一化」处理,需要注意的是,训练集和测试集的处理必须完全相同。

from sklearn import datasets
from sklearn import model_selection
from sklearn import preprocessing

# 1、获取数据集
iris = datasets.load_iris()
# 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# 3、特征归一化
mm = preprocessing.MinMaxScaler()
x_train = mm.fit_transform(x_train)
x_test = mm.fit_transform(x_test)
print(x_train)
print(x_test)

输出:

[[0.8        0.5        0.87719298 0.70833333]
 [0.42857143 0.5        0.66666667 0.70833333]
 ......

从结果我们可以看到,特征值发生了相应的变化。

2.4、贝叶斯算法处理并评估

接下来,实例化贝叶斯的类对象,把训练集的特征值目标值传进去,进行训练。

from sklearn import datasets
from sklearn import model_selection
from sklearn import preprocessing
from sklearn import naive_bayes

# 1、获取数据集
iris = datasets.load_iris()
# 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# 3、特征归一化
mm = preprocessing.MinMaxScaler()
x_train = mm.fit_transform(x_train)
x_test = mm.fit_transform(x_test)
# 4、贝叶斯算法处理
estimator = naive_bayes.MultinomialNB()
estimator.fit(x_train, y_train)

# 5、模型评估
y_predict = estimator.predict(x_test)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值