머신러닝

머신러닝(7) Linear Regression으로 데이터 예측하기

개발연습자1 2022. 12. 1. 18:09

지난 시간까지 데이터 전처리를 진행하는 방법을 알아보았다. Linear Regression으로 머신러닝을 해서 데이터를 예측해보자

 

우선 데이터를 불러온다.

#데이터프레임관련 라이브러리 호출
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#데이터를 불러온다.
df=pd.read_csv('../data/Salary_Data.csv')

df

 

데이터 전처리 작업을 진행한다. 지난시간에 종합적으로 다뤘므로 생략하고 진행한다.

 

#Traing/Test 셋으로 분리

#분리하는 함수
from sklearn.model_selection import train_test_split

#데이터를 분리해서 4개의 데이터에 각각 저장
X_train, X_test, y_train, y_test=train_test_split(X,y, test_size= 0.2, random_state= 1)

 

 

데이터가 준비되었으면 Linear Regression모델로 예측한다.

#예측모델 함수 호출
from sklearn.linear_model import LinearRegression

#regressor라는 이름으로 저장
regressor = LinearRegression()

# 인공지능을 학습시킨다.
regressor.fit(X_train,y_train)

그럼 이렇게 뜨면서 학습이 완료된다.

 

계수가 얼마인지, y절편이 얼마인지 알아보자

# 계수 기울기 값 a
regressor.coef_

>>>> array([9332.94473799])

# y절편 값 b
regressor.intercept_

>>>> 25609.89799835482

 

이제 성능을 테스트 해준다 성능을 테스트 하려면 X_test데이터를 regressor에 넣으면 된다.

 

#예측한 데이터를 y_pred에 저장
y_pred =regressor.predict(X_test)

y_pred

>>>> array([75074.50510972, 91873.8056381 , 62008.38247653, 81607.56642631,
            67608.14931932, 89073.92221671])

 

 

아래에 행부분이 예측한 데이터이다.  실제와 얼마나 차이가 있는지 알고 싶다면 실제값인 y_test에서 값을 빼서 차이를 보면 된다. 이 차이를 오차라 한다.

 

#오차(error)의 정의: 실제값-예측값

# 똑똑한 인공지능이란?? 오차가 적은것!!!

error=y_test-y_pred

#성능 측정을 하기 위해선
#그냥 오차를 사용하면, 부호때문에 , 이상하게 계산이 된다.
#따라서 성능측정을 하기 위해서는, 부호를 없애기 위해서
#오차를 제곱해준다.

(error**2).mean()
51338023.49224842

 

오차를 제곱하여 평균으로 나눈값을 인공지능의 성능값인 MSE라고 한다.

 

 

성능을 눈으로 보고 싶다면 그래프를 그려보면 된다.

 

# 실제값과 예측값을 차트로 그려본다.

#test값은 벨류로 맞춘다.
plt.plot(y_test.values)
plt.plot(y_pred)
plt.legend( ['Real','Pred'] )
plt.show()

 

이렇게 차이가 나는부분을 알수 있다.

반응형