Python中的简单感知器,带有文档

时间:2017-12-25 17:23:35

标签: python algorithm machine-learning

我在Python中编写了这个简单的感知器算法

import numpy as nu
import random as ra

function = lambda x: 1 if x >= 0 else 0

training_set=[([1,0,0],1),
              ([1,1,1],1),
              ([1,-1,0],0),
              ([1,0,-1],0),
              ]

w = nu.random.rand(3)
eta = 0.1
print(w)

for l in range(10000):
    for _ in range(4):
        x,y = training_set[_]
        res = (function(nu.dot(w,x)) - y)
        update = eta * res
        w += nu.dot(update,x)

print(w)

function检查是否w*x>=0。 我有一个包含4个元素的训练集,第一个元素是xi向量,第二个元素是预期结果。第一个元素xi是偏差。 循环继续更新wi 1000次迭代。 事实是,有时会收敛,有时则不收敛。

有些问题:

  1. 算法似乎正确吗?
  2. 我必须投入多少训练样本才能确保算法的完美收敛?
  3. 为什么平均循环完成了training_set的4次迭代?

1 个答案:

答案 0 :(得分:0)

  1. 我认为您需要翻转更新的标志。否则,你会远离最低限度。
  2. 这取决于w的初始值,学习率,培训样本的顺序等。您无法对收敛做出任何硬性陈述。
  3. 看起来您编辑了代码,这个问题变得无关紧要。
相关问题