机器学习---监督学习之感知器算法

  1. 感知器算法(以神经网络为基础)是用来分类的,也就是用来回答是否问题的。
  2. 神经网络
    神经网络是机器学习中的一个模型,可以用于两类问题的解答:
    分类:把数据划分成不同的类别
    回归:建立数据间的连续关系
  3. 如何分类?(找线划分)
    在这里插入图片描述
    红蓝色都是我们的数据集,如何找出中间的那条直线?这条直线满足如下的数学式子:

在这里插入图片描述
如果是三个输入,一个输出就可以写成下图的方式。
在这里插入图片描述
如果是n个输入就如下图所示
在这里插入图片描述

  1. 感知器
    把上面方程的计算过程用神经网络的形式表示出来就是感知器。
    对于常数项b我们可以单独作为输入,也可以当作常数。
    在这里插入图片描述
    或者
    在这里插入图片描述
    n维的就会是
    在这里插入图片描述
    w称为权重,b称为偏差。

  2. 用感知器实现与或的逻辑
    在这里插入图片描述
    在这里插入图片描述

  3. 如何实现找到合适的方程?

  • 随机生成一个线性方程
  • 用分类错误的数据不断调整方程
    如何根据错误数据调整直线方程呢?
    在这里插入图片描述
    红色的数据出错了,我们希望直线把它划分正确,所以准备让直线向红数据靠近,如上图右边所示,第一行是直线的参数,第二行是点的参数,相减,得到新的直线。但是这条直线波动很大,我们希望它波动小一点,所以设置一个学习率控制波动速度,如下图所示
    在这里插入图片描述
    若是蓝色的数据出错,就加上相关参数
    在这里插入图片描述
    伪代码如下:
    在这里插入图片描述
def perceptronStep(X, y, W, b, learn_rate = 0.01):
    for i in range(len(X)):
        y_hat = prediction(X[i],W,b)
        if y[i]-y_hat == 1:
            W[0] += X[i][0]*learn_rate
            W[1] += X[i][1]*learn_rate
            b += learn_rate
        elif y[i]-y_hat == -1:
            W[0] -= X[i][0]*learn_rate
            W[1] -= X[i][1]*learn_rate
            b -= learn_rate
    return W, b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值