授業でパーセプトロンを習ったので、イメージを掴むために実装しました。
#<パーセプトロン実装>
#訓練データ
train_x0 = [1, 1, 1, 1 ,1 ,1]
train_x1 = [1.2, 0.2, -0.2, -0.5, -1.0, -1.5]
#訓練データのクラス
train_y = [1, 1, 1, 2, 2, 2]
#学習係数
p = 0.5
#重みベクトル
w0 = 0.5
w1 = 0.5
#誤りの修正回数
error_count = 0
# 識別関数の定義
def learn():
global w0, w1, error_count
for i in range(5):
g = w0 * train_x0[i] + w1 * train_x1[i]
if train_y[i] == 1 and g > 0:
pass
elif train_y[i] == 1 and g <= 0:
w0 += p * train_x0[i]
w1 += p * train_x1[i]
error_count += 1
elif train_y[i] == 2 and g <= 0:
pass
else:
w0 -= p * train_x0[i]
w1 -= p * train_x1[i]
error_count += 1
#学習回数
train_count = 0
#1回目の学習
learn()
train_count += 1
#2回目以降の学習
while error_count != 0:
error_count = 0
learn()
train_count += 1
print("学習後のw0:" +str(w0))
print("学習後のw1:" +str(w1))
print("学習回数:" + str(train_count))