感知器算法例题ppt_机器学习笔记(1) 感知机算法 之 实战篇

我们在上篇笔记中介绍了感知机的理论知识,讨论了感知机的由来、工作原理、求解策略、收敛性。这篇笔记中,我们亲自动手写代码,使用感知机算法解决实际问题。

先从一个最简单的问题开始,用感知机算法解决OR逻辑的分类。

import numpy as np

import matplotlib.pyplot as plt

x = [0,0,1,1]

y = [0,1,0,1]

plt.scatter(x[0],y[0], color="red",label="negative")

plt.scatter(x[1:],y[1:], color="green",label="positive")

plt.legend(loc="best")

plt.show()

下面我们来定义一个函数,用来判定一个样本点是否被正确分类了。由于此例中样本点是二维的,因此权重向量也相应的为二维,可以定义为$w = (w_1, w_2)$,在Python中可以使用列表来表达,例如`w = [0, 0]`,而样本到超平面的距离自然就是`w[0] * x[0] + w[1] * x[1] +b`。下面给出完整的函数。

def decide(data,label,w,b):

result = w[0] * data[0] + w[1] * data[1] - b

print("result = ",result)

if np.sign(result) * label <= 0:

w[0] += 1 * (label - result) * data[0]

w[1] += 1 * (label - result) * data[1]

b += 1 * (label - result)*(-1)

return w,b

写完核心函数后,我们还需要写一个调度函数,这个函数提供遍历每一个样本点的功能。

def run(data, label):

w,b = [0,0],0

for epoch in range(10):

for item in zip(data, label):

dataset,labelset = item[0],item[1]

w,b = decide(dataset, labelset, w, b)

print("dataset = ",dataset, ",", "w = ",w,",","b = ",b)

print(w,b)

data = [(0,0),(0,1),(1,0),(1,1)]

label = [0,1,1,1]

run(data,label)result = 0

dataset = (0, 0) , w = [0, 0] , b = 0

result = 0

dataset = (0, 1) , w = [0, 1] , b = -1

result = 1

dataset = (1, 0) , w = [0,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值