sklearn中分类算法的学习

分类算法

  1. 介绍
    线性可分是指可以用二维空间的直线或者多维空间的平面将输入数据分开,非线性就是线性不可分
    sklearn 的naive_bayes 算法提供了三种实现 BernouliNB 伯努利天真贝叶斯
    multinormialNB 多项式贝叶斯 GaussianNB 高斯贝叶斯
    #分别适用抛硬币这种01布尔型 文章中单词数量型的输入 连续性数字的输入
    在选择分类算法的时候可以参考这种价值观来选取所需的算法库或者自己构建,
    下面的代码实现的是对高斯贝叶斯的学习过程和理解:

  2. 正文:

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的学习过程,当然在调用的过程中学会里面一些具体参数的调整也是非常值得关注,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值