실제 데이터를 돌려보기 전에 사용법부터 익히고 가자.
일단 그 유명한 파이썬 머신러닝 라이브러리 싸이킷런을 불러오자
이제 LinearRegression
모델을 생성하고, 그 안에 X, y 데이터를 fit 시킨다.
fit()
메서드는 선형 회귀 모델에 필요한 두 가지 변수를 전달하는거다.
line_fitter.coef_
line_fitter.intercept_
어쨌든 이게 끝이다. 이렇게 하면 새로운 X
값을 넣어 y값을 예측할 수 있게 된다.
만약 기울기와 절편을 알고싶다면 line_fitter.coef_
, line_fitter.intercept_
를 직접 찍어보면 된다.
그리고 선형회귀 개념 포스팅에서 수렴할 때까지 얼마나 반복할 것인지(num_iterations
), 얼마나 꼼꼼히 학습할 것인지(learning_rate
) 이런 것들을 정해야 한다고 했는데 여기서는 이렇게 복잡하게 고려하지 않아도 괜찮다. 싸이킷런 단순 선형회귀에서는 최소제곱법을 활용하기 때문이다.
일단 필요한 라이브러리를 불러온다.
sklearn 외에도 데이터를 불러올 때 필요한 pandas, 배열을 바꿀 때 필요한 numpy, 시각화를 위한 matplotlib을 함께 불러왔다.
데이터는 Kaggle에서 가져왔다.
일단 csv 파일로 키와 몸무게가 들어있는 파일을 준비했다.
간단하게 전처리하고 pandas로 윗 부분만 찍어보면 아래와 같이 나온다.
matplotlib으로 시각화를 해보면 아래와 같이 나온다.
대충 우상향하는 패턴이 보인다.
이제 위에서 배운대로 모델을 생성하고 데이터를 fit 시킨다.
여기서 주의해야할 점은 X
데이터를 넣을 때 .values.reshape(-1,1)
를 해줬다는거다. 왜냐하면 X는 2차원 array 형태여야 하기 때문이다. 이런 식으로 [[x1], [x2], [x3], ... , [xn]]
. (이렇게 넣는 이유는 X 변수가 하나가 아니라 여러개일 때 다중회귀분석을 실시하기 위함인데, 이는 다른 포스팅에서 소개한다.)
아무튼 이렇게 하면 끝이다.
이제 한번 예측을 해보자. 키가 70인 사람을 예측한다고 치면 이렇게
array([134.25754957])
이런 값을 돌려준다. 몸무게가 134 정도 되나보다.
그렇다면 기울기를 알려달라고 해보자.
array([3.43166515])
를 돌려준다.
이번엔 절편을 알려달라고 해보자
-105.95901104668266이 나왔다.
이번엔 기존 X 값으로 y를 예측하게 해서 그래프를 그려보자. 당연히 선이 나올 것이다.
여기까지다.
다음엔 이렇게 1차 방정식으로 설명이 가능한 단순선형회귀분석 말고, 조금 더 복잡한 다중 선형 회귀 분석(Multiple Linear Regression)을 알아보자