分类算法
-
介绍
线性可分是指可以用二维空间的直线或者多维空间的平面将输入数据分开,非线性就是线性不可分
sklearn 的naive_bayes 算法提供了三种实现 BernouliNB 伯努利天真贝叶斯
multinormialNB 多项式贝叶斯 GaussianNB 高斯贝叶斯
#分别适用抛硬币这种01布尔型 文章中单词数量型的输入 连续性数字的输入
在选择分类算法的时候可以参考这种价值观来选取所需的算法库或者自己构建,
下面的代码实现的是对高斯贝叶斯的学习过程和理解: -
正文:
import random
import matplotlib.pyplot as plt
k = 5
# 颜色标签
colors = ['green', 'red', 'blue', 'yellow', 'pink']
# 先随机出中心点
centers = []
for i in range(k):
x = 10 + 100 * random.random()
y = 10 + 100 * random.random()
centers.append((x, y))
points = []
# 然后在每个中心点的周围随机100个点
for ci, (x, y) in enumerate(centers):
ps = []
for i in range(100):
px = x + random.random() * 20 - 10
py = y + random.random() * 20 - 10
ps.append((px, py))
points.append(((px, py), ci))
# 显示数据点
plt.scatter(
[x for x, y in ps],
[y for x, y in ps],
c=colors[ci], marker='.')
# plt.show()
下面是使用sklearn 中的高斯贝叶斯分类算法实现分类预测
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit([p for p,ci in points],[ci for p,ci in points])
pcolor=[]
grids=[(x,y) for x in range(0,120,5) for y in range(0,120,5)]
for i,ci in enumerate(model.predict(grids)):
pcolor.append((grids[i],ci))
plt.scatter(
[x for (x,y),ci in pcolor],
[y for (x,y),ci in pcolor],
c=[colors[ci] for (x,y) , ci in pcolor],marker='x'
)
plt.show()
现阶段调用sklearn 就是为了单纯掌握和使用这个库,具体的数学公式推导在这个地方就不再赘述了,大部分书籍都有介绍,花书,动物书都是挺不错的入门书籍,我的第一本机器学习书籍就是动物书
分类效果**如下:
前面的这几篇都是关于sklearn的学习过程,当然在调用的过程中学会里面一些具体参数的调整也是非常值得关注,