机器学习3——贝叶斯分类器

Bayes决策论是概率框架下进行决策的基本方法之一,也是统计模式是别的主要方法之一。贝叶斯分为俩个学派:贝叶斯学派和频率学派。

  • 频率学派强调频率的“自然属性”,认为该使用事件在重复实验中发生的频率作为其发生的概率的估计。
  • 贝叶斯学派认为:事件之所以认为具有随机性,仅仅是因为“观察者”的知识不完备,对于“知情者”来说,该事件其实并 不具有随机性。

什么意思呢?举个例子:假设有一个人抛硬币,由远及近坐了三个人。他本人看到是正面朝上的,其他三人或多或少也看到了点,当然越远越看不清。而频率认为正反概率都应该是50%,但对贝叶斯学派的人来说,对抛硬币的人来说正面的概率是100%,离他近的可能是80%,最远的可能是60%。
所以对于贝叶斯学派的人来说,模型的参数才是关键。

贝叶斯基本公式:P(A|B)=P(B|A)P(A)/P(B)

P(A)为A先验概率,他不考虑B方面因素。P(B)是B的先验概率。P(B|A)是A发生后B发生的条件概率,由于取值于A也称B的后验概率。同理P(A|B)也成为A的后验概率。比例P(B|A)/P(B)称为标准相似度,故而贝叶斯学习可表述为:
后验概率 = 标准相似度×先验概率

特点:
- 便于处理不完全数据,标准监督学习在数据缺失时有较大偏差,而贝叶斯对不完全数据有较好预测效果
- 能够充分利用领域知识和样本数据,贝叶斯网络采用弧表示变量间的依赖关系,采用概率分布表来表示依赖关系的强弱,可以将先验信息与样本知识有机结合
- 能够学习变量间的因果关系(利用先验知识能够)
- 具有我纠错能力
- 当属性个数较多或者属性之间相关性较大时其分类效率不如决策树,因为贝叶斯模型对于属性之间相互独立的假设往往与实际应用不符

import numpy as np
import cv2
import matplotlib.pyplot as plt

#创建数据
# 训练的点数
train_pts = 30

# 创建测试的数据点,2类
# 以(-2.5, -2.5)为中心
rand1 = np.ones((train_pts,2)) * (-3) + np.random.rand(train_pts, 2)
print('rand1:')
print(rand1)

# 以(2.5, 2.5)为中心
rand2 = np.ones((train_pts,2))*2+ np.random.rand(train_pts, 2)
print('rand2:')
print(rand2)

# 合并随机点,得到训练数据
#按列合并,每一行为一组数据
train_data = np.vstack((rand1, rand2))
train_data = np.array(train_data, dtype='float32')
#创建标签,也是按列合并故而前30行为一组,后30行为一组
train_label = np.vstack( (np.zeros((train_pts,1), dtype='int32'), np.ones((train_pts,1), dtype='int32')))

bayer = cv2.ml.NormalBayesClassifier_create()  
ret = bayer.train(train_data, cv2.ml.ROW_SAMPLE, train_label)  

# 显示训练数据  
plt.figure(1)  
plt.plot(rand1[:,0], rand1[:,1], 'o')  
plt.plot(rand2[:,0], rand2[:,1], 'o')   
plt.show()

机器学习3——贝叶斯分类器_第1张图片

# 测试数据,20个点
pt = np.array(np.random.rand(20,2) * 4 - 2, dtype='float32')
(ret, res) = bayer.predict(pt)
print("res = ")
print(res)

机器学习3——贝叶斯分类器_第2张图片

# 按label进行分类显示
plt.figure(2)
idx = np.hstack((res, res))
for i in range(0, 2) :
    type_data = pt[idx == i]
    type_data = np.reshape(type_data, (int(type_data.shape[0] / 2), 2))
    plt.plot(type_data[:,0], type_data[:,1], 'o')

plt.show()

参考博客:

https://blog.csdn.net/lights_joy/article/details/46700445?locationNum=3
《视觉机器学习20讲》

你可能感兴趣的:(机器学习)