경사 하강법으로 아달린 학습 규칙을 구현했기 때문에 학습 알고리즘을 조금만 수정하면 확률적 경사 하강법으로 가중치를 업데이트할 수 있습니다. fit 메서드 안에서 각 훈련 샘플에 대해 가중치를 업데이트할 것입니다. 추가로 partial_fit 메서드도 구현하겠습니다. 이 메서드는 가중치를 다시 초기화하지 않아 온라인 학습에서 사용할 수 있습니다. 훈련 후에는 알고리즘이 수렴하는지 확인하려고 에포크마다 훈련 샘플의 평균 손실을 계산합니다. 손실 함수를 최적화할 때 반복적인 순환이 일어나지 않도록 매 에포크가 일어나기 전에 훈련 샘플을 섞는 옵션을 추가합니다. random_state 매개변수로는 재현 가능하도록 랜덤 시드를 지정할 수 있습니다.
class AdalineSGD:
"""ADAptive LInear NEuron 분류기
매개변수
------------
eta : float
학습률 (0.0과 1.0 사이)
n_iter : int
훈련 데이터셋 반복 횟수
shuffle : bool (default: True)
True로 설정하면 같은 반복이 되지 않도록 에포크마다 훈련 데이터를 섞습니다
random_state : int
가중치 무작위 초기화를 위한 난수 생성기 시드