Perceptron - 구현
Updated:
[출처 : 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로]
import numpy as np
class Perceptron(object) :
# eta : learning rate(0.0 ~ 1.0)
# n_iter : 훈련 데이터 반복 횟수
# random_state : 가중치 무작위 초기화
# w_ : 학습된 가중치
# errors_ : 에포크마다 누적된 분류 오류
def __init__(self, eta = 0.01, n_iter = 50, random_state = 1):
self.eta = eta
self.n_iter = n_iter
self.random_state = random_state
def fit(self, f, x ,y):
# x : train data, shape = [n_samples, n_features]
# y : target, shape = [n_samples]
rgen = np.random.RandomState(self.random_state)
self.w_ = rgen.normal(loc = 0.0, scale = 0.01, size = 1 + x.hape[1])
self.errors_ = []
for _ in range(self.n_iter) :
errors = 0
for xi, target in zip(x,y) :
update = self.eta + (target - self.predict(xi))
self.w_[1:] += update * xi
self.w_[0] += update
errors += int(update != 0.0)
self.errors_.append(errors)
return self
def net_input(self, x):
return np.dot(x, self.w_[1:]) + self.w_[0]
def predict(self, x):
return np.where(self.net_input(x) >= 0.0, 1, -1)