Data analysis using python_D6. 11st of Sep, Sat.
Ch02. 고객별 연간 지출액 예측 - 06. 리니어 리그레션 모델 만들기
linear regression을 하는 모델링을 불러와서 할 것이다. 모델링을 하는 파트는 그렇게 많은 코드를 요구하지 않는다. 모델링을 이해하는 데 많은 시간이 필요하다. 오히려.
여러 모듈이 있는데 그 중 statsmodels을 불러온다. statsmodels안에 많은 펑션이 있는데 그 중 OLS가 linear regression을 만든다. OLS 에 먼저 train을 넣어준다. 특이하게 y값을 먼저 넣는다.
이렇게 하면 linear regression을 돌리기 위한 준비가 끝난다.
OLS 펑션안에 y_train, X_train이라는 데이터를 가지고 지정해 주었다. 이것을 트레이닝을 시키기 위해 'fit'을 사용한다. 이렇게 하면 보이진 않지만 노란색 선이 생긴 것이다.
model.summary()를 해주면 리니어 리그레션 레포트를 볼 수 있다.
statsmodels 가 같은 기능을 하는 다른 명령어에 비해 summary를 더 잘 보여준다.
07.모델을 활용하여 예측하고 평가하기_1
X는 독립변수, y는 종속변수이다.
이 X_train과 y_train을 써서 모델링을 했다. 그랬더니 예를 들어 y = aX1 + bX2 + cX3 이런 linear regression을 얻었다고 한다면,
test 데이터를 집어 넣을 것이다. X_test 만 집어 넣어서 y_test 가 어떻게 나올지 예측한다. X_test 값을 각각 X1, X2, X3에 집어 넣는다. a, b, c는 미지수지만 모델링을 하면 컴퓨터에서 알아서 생성해서 집어 넣는다. 그러면 실제 y값과 예측한 y 값이 어떤 차이가 있는지 알아볼 수 있다.
model.predict(X_test) model이란 이름에 이안에 모든 정보가 다 들어있다. 이미 모델링이 끝났음. 그리고 .predict를 써주면 예측을 한다. predict() 괄호에는 X_test가 들어간다. 위의 그림 참조.
실행하면 예측값이 나온다. 앞의 숫자는 랜덤 샘플링이기 때문이다. 이걸 y_test와 비교해 볼 수 있다.
일단 이렇게 나오면 서로 비교하기가 조금 어렵다. 이것을 비교하는 방법은 그림을 그려서 비교하는 것. 여기에는 seaborn을 사용할 것이다.
sns.scatterplot(x=y_test, y=pred) 이렇게 하면 되는데 가로, 세로 값을 같게 하기 위해 plt.figure(figsize = (10, 10))을 써준다. 이렇게 하면 정사각형 모양의 plot를 볼 수 있다. y축이 예측값이다. 완전히 일직선이 되지는 않았지만 어느정도 라인으로 보인다.
데이터 시각화를 100% 이해할려고 하지 않아도 된다. 자주 보이는 코드는 자연스럽게 외워진다.