본문 바로가기
머신러닝

확률적 경사 하강법

by 남녀칠세부동산! 2024. 5. 16.

여기 물고기의 종류와 무게, 길이, 두께 데이터가 있다.  그런데, 물고기 데이터가 계속 늘어날 예정이라면? 물고기 마다 일일이 무게를 잴 수 없으니... 무슨 방법이 없을까?

방법 1: 데이터가 들어올 때마다 훈련을 다시 시킬까?
: 데이터가 계속 늘어나면, 저장공간에 부하가 걸림. 훈련시간도 늘어남.

 

방법 2: 그러면 이전에 가지고 있던 데이터를 좀 버려서 데이터 크기를 유지할까?
: 버려진 데이터에 중요한 내용이 있다면, 큰일임.

 

방법 3: 훈련시켜 둔 기존 모델을 버리지 말고 새로운 데이터만 추가로 학습 시키자!
: 점진적 학습(Incremental Learning) 온라인 학습(Online Learning)이라고 함

 

대표적인 점진적 학습인 확률적 경사 하강법을 공부해보자

import pandas as pd
fish = pd.read_csv('https://bit.ly/fish_csv_data')
# 잉어, 빙어 등 물고기 데이터를 읽는다

print(fish)

 

 

좀 더 보기 편하게 describe() 메서드를 사용해볼까?

describe()는 통계량을 요약해서 출력해주는 메서드이다.

fish.describe()

 

 

구글 코랩에서 보여지는 화면

 

 

물고기의 데이터와 이름을 각 각 나누고 넘파이 배열로 바꿔보자.

왜 넘파이 배열오 바꾸는지 궁금하다면, 데이터사이언스 넘파이 배열 설명 페이지에 설명이 잘 되어있다.

fish_input = fish[['Weight','Length','Diagonal','Height','Width']].to_numpy()
fish_target = fish['Species'].to_numpy()

print(fish_input)
print(fish['Species'])

 

from sklearn.model_selection import train_test_split
# train_test_split() 함수를 사용해 데이터 훈련세트와 테스트 세트로 나누자.

train_input, test_imput, train_target, test_target = train_test_split(
    fish_input, fish_target, random_state=40
)

# 훈련세트와 테스트세트의 특성을 표준화 전처리 하자.
# 꼭! 훈련세트에서 학습한 통계값으로 테스트세트도 변환해야 함.

'머신러닝' 카테고리의 다른 글

K-평균 알고리즘  (0) 2024.05.20
지니 불순도(Gini impurity)와 정보 이득  (0) 2024.05.17
Sklearn(사이킷런) 붓꽃 데이터  (0) 2024.05.13