机器学习笔记-单层感知器

单层感知器

1、人体神经网络

在这里插入图片描述

信号从树突传递进来,在细胞核进行汇总,经过轴突传递到其他的部分。从上图可以看出来,神经元是一个信息处理单元,具有多输入多输出的结构。

2、单层感知器

在这里插入图片描述

其中输入信号为:x1,x2,x3

权重为:w1,w2,w3

输出信号:y

偏置:b

f():sign激活函数

3、sign激活函数

在这里插入图片描述

当x>0时,激活函数为1,当x<0时,激活函数为-1.

图像所示如下所示:
在这里插入图片描述

4、感知器的学习规则

在这里插入图片描述

感知器学习规则实例:

在这里插入图片描述

感知器收敛的条件:误差小于某个预先设定的较小的值,两次迭代之间的权值变化已经很小,设定最大迭代次数,当迭代超过最大次数就停止。

5、单层感知机实例

题目:假设平面坐标系上有四个点,(3,3),(4,3)这两个点的标签为1,(1,1)(0,)这两个点的标签为-1,构建神经网络来分类,其中学习率lr=0.11,权重为[-1,1]之间的随机数。

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
#输入数据
X=np.array([[1,3,3],[1,4,3],[1,1,1],[1,0,2]])
#输入标签
Y=np.array([[1],[1],[-1],[-1]])
#权值初始化,3行1列(3个输入1个输出),取值范围-1-1
W=(np.random.random([3,1])-0.5)*2
print(W)
#学习率
lr=0.11
#神经网络的输出
O=0
def updata():
    global X,Y,W,lr
    O=np.sign(np.dot(X,W))#4个数据的预测值
    W_C=lr*(X.T.dot(Y-O))/int(X.shape[0])#更新权值的平均值
    W=W+W_C
for i in range(100):
    updata()#更新权值
    print(W)#打印当前的权值
    print(i)#打印迭代次数
    O=np.sign(np.dot(X,W))#计算当前的输出
    if (O==Y).all():#如果期望输出等于实际输出,模型收敛,循环结束
        print("结束")
        print("迭代次数:",i)
        break
#正样本
x1=[3,4]
y1=[3,3]
#负样本
x2=[1,0]
y2=[1,2]
#计算分界线的斜率以及截距
k=-W[1]/W[2]
d=-W[0]/W[2]
print('k=',k)
print('d=',d)
xdata=(0,5)
plt.figure()
plt.plot(xdata,xdata*k+d,'r')
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='y')
plt.show()

结果:

在这里插入图片描述

参考sign激活函数:https://blog.csdn.net/qq_36663518/article/details/107904308

参考视频:https://www.bilibili.com/video/BV1Rt411q7WJ?p=31&vd_source=166e4ef02c5e9ffa3f01c2406aec1508

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值