楼主: 时光人
5762 0

python机器学习API介绍9: 高斯贝叶斯分类器(GaussianNB) [推广有奖]

  • 3关注
  • 34粉丝

院士

23%

还不是VIP/贵宾

-

威望
1
论坛币
26910 个
通用积分
429.6560
学术水平
95 点
热心指数
109 点
信用等级
91 点
经验
39970 点
帖子
1630
精华
3
在线时间
580 小时
注册时间
2019-2-25
最后登录
2024-8-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

CDA网校:数据科学、人工智能从业者的在线大学。

数据科学(Python/R/Julia)数据分析、机器学习、深度学习

GaussianNB是高斯贝叶斯分类器,它假设特征的条件分布概率满足高斯分布,其原型为:

class sklearn.naive_bayes.GaussianNB

GaussianNB没有参数,所以不需要调参。

属性说明:

class_prior_:一个数组,形状为n_class,是每个类别的概率P(y=Ck)。

class_count_: 一个数组,形状也为n_class,是每个类别包含的训练样本的数量

theta_:一个数组,形状为(n_class,n_features),是每个类别上每个特征的均值。

sigma: 一个数组,形状为(n_class,n_features),是每个类别上每个特征的标准差。

方法说明:

fit(x, y[,sample_weight):训练模型。

partial_fit(x,y[, classes,sample_weight):` 追加训练模型。该方法主要用于大规模数据集的训练。这个时候可以将大数据集划分成若干个小数据集,然后在这些小数据集上连续调用partial_fit方法来训练模型。

predict(x):用模型进行预测,返回预测值

predict_log_proba(x):返回一个数组,数组的元素依次是x预测为各个类别的概率的对数值。

predict_proba(x):返回一个数值,数组元素依次是x预测为各个类别的概率值。

score(x, y[,sample_weight]):返回测试性能得分(测试分数不超过1,但是可能为负数(当预测效果太差的时候),score值越接近1,说明预测效果越好)。

示例说明


  1. from sklearn import cross_validation, naive_bayes

  2. import numpy as np

  3. import matplotlib.pyplot as plt

  4. from sklearn.datasets import load_digits

  5. def show_digits:

  6. digits = load_digits

  7. fig = plt.figure

  8. print("vector from images 0:", digits.data[0])

  9. for i in range(25):

  10. ax = fig.add_subplot(5, 5, i+1)

  11. ax.imshow(digits.images[i], cmap=plt.cm.gray_r, interpolation='nearest')

  12. plt.show

  13. show_digits
复制代码

运行上述代码后,其结果为

digits_dataset运行结果

下面我们看看给出加载数据集函数和高斯分类器的函数代码:

  1. def load_digits_data:

  2. #使用鸢尾花数据集

  3. digits = load_digits

  4. #返回一个元组,元组依次是:训练样本集、测试样本集、训练样本集对应的标签值、测试样本对应的标签值

  5. #这里采用分层采样,保证了测试样本集中各类别样本的比例与原样本中各类别的比例相同。

  6. #如果不采用分层采样,那么最后切分的测试集数据就不是无偏的了

  7. return cross_validation.train_test_split(digits.data, digits.target, test_size=0.3,

  8. random_state=0)

  9. def test_GaussianNB(*data):

  10. x_train, x_test, y_train, y_test = data

  11. cls = naive_bayes.GaussianNB

  12. cls.fit(x_train, y_train)

  13. print("training score set is: {:.3f}".format(cls.score(x_train, y_train)))

  14. print("test score set is: {:.3f}".format(cls.score(x_test, y_test)))

  15. x_train, x_test, y_train, y_test = load_digits_data

  16. test_GaussianNB(x_train, x_test, y_train, y_test)
复制代码


上述代码运行后其结果为

training score set is: 0.859

test score set is: 0.824

我们看到高斯贝叶斯分类器对训练集的预测准确率为0.859,对测试机的预测准确率为0.824,两者准确率相差不大,符合预期结果。


关注“AIU人工智能”公众号,回复“白皮书”获取数据分析、大数据、人工智能行业白皮书及更多精选学习资料!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 14:46