top of page
작성자 사진JC.kim

[Python] Machine Learning #4. Adaline2

최종 수정일: 2017년 12월 16일


이번엔 파이썬으로 Adaline 알고리즘을 구현해 본다. 코드분석은 아래에 작성되어 있다.

이 Adaline 알고리즘은 Perceptrron모델 알고리즘에 기초하여 fit Method 부분만 수정하여 만들어진 알고리즘이다.

Adaline 알고리즘은 아래와 같다.

*import numpy as np

class AdalineGD(object):

파이썬 수학 라이브러인 numpy를 np로 로드한다. numpy는 subroutine이므로, numpy의 method를 따로 정의하지 않고 where 이나 zeros 를 사용할 수있다.

대신 AdalineGD는 따로 class선언했기 때문에 Adline의 method는 class 내부에서만 작동하며, 현재 파일을 저장하고 함수를 실행할때, 따로 로드해주어야 한다.


* def __init__(self, eta = 0.01, n_iter = 50):

self.eta = eta

self.n_iter = n_iter

여기서는 adaline의 parameter를 정의한다. eta는 Learning rate (학습률)이다. 수식에서 η를 의미한다. 따로 eta값을 정의하지 않는다면 adaline을 사용할때, 초기 값은 항상 0.01로 시작한다.

n_iter는 Training 횟수이다. 데이터를 얼마나 훈련할지 설정한다. 이 또한 따로 정의하지 않는다면 50회로 시작할 것이다. self는 object를 의미한다. eta와 n_iter를 object로 정의한다.


* def fit(self, X, y):

self.w_ = np.zeros( 1 + X.shape[1])

self.cost_ = []

np.zeros는 numpy에 있는 Method이다. np.zeros()은 ()안에 있는 수 만큼 비어있는 공간을 만든다. self.w_에 1+X.shape[1] 공간을 만들어 준다. self.w_의 가중치를 제로벡터로 초기화 하며, 여기에 1을 더하여 임계치를 설정했다.

self.errors_ = []는 예측값과 실제 값에 의해 발생하는 오차를 저장하는 공간을 만들어 준다. errors의 공간을 만든다.


*for i in range(self.n_iter):

output = self.net_input(X)

errors = (y - output)

self.w_[1:] += self.eta * X.T.dot(errors)

self.w_[0] += self.eta * errors.sum()

cost = (errors**2).sum() / 2.0

self.cost_.append(cost)

return self

이 부분이 Adaline model의 모든 것을 담고 있는 부분이다. 먼저 for 조건 문이므로, 변수 i가 n_iter 학습 차수 만큼 반복 될 것이다. 그리고 output을 activation에 있는 선형적인 X값을 취해 온다. 이는 코드 아랫부분에 정의되어 있다. perceptron에서는

조회수 121회댓글 0개

최근 게시물

전체 보기

Comments


bottom of page