경마 데이터를 이용하여 성별과 몸무게로 승점을 예측하는 선형 회귀 모델을 알아보겠다. 데이터는 다음의 링크에서 다운로드할 수 있다. kaggle korea horse racing
import pandas as pd
from sklearn import linear_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import accuracy_score
위의 코드는 선형 회귀 분석에 필요한 라이브러르를 불러오는 것이다.
df = pd.read_csv('./2014_s.csv', encoding='euc-kr')
df.tail()
ID RCTRCK RACE_DE PRDCTN_NATION_NM SEX AGE BND_WT TRNER \
27213 27214 제주 2014-11-29 한 거 NaN 56.0 강대은
27214 27215 제주 2014-11-29 한 거 NaN 55.5 박병진
27215 27216 제주 2014-11-29 한 거 NaN 52.5 김영래
27216 27217 제주 2014-11-29 한 거 NaN 53.0 강대은
27217 27218 제주 2014-11-29 한 거 NaN 57.5 박병진
RCHOSE_OWNR_NM RCHOSE_BDWGH
27213 김영구 300
27214 고경수 300
27215 광명종합 333
27216 김기준 281
27217 강상우 314
위의 코드는 링크를 통해 가져온 csv 데이터를 읽어오는 코드이다. 해당 데이터는 euc-kr 방식으로 encoding 설정해주어야 정상적으로 정보를 가져올 수 있다.
def get_sex(sex):
number = 0
if sex == '암': number = 2
elif sex == '수': number = 1
return number
df['NUMBER_SEX'] = df['SEX'].apply(lambda x : get_sex(x))
위의 데이터는 sex column의 값을 str에서 int로 바꿔주는 과정이다. 0 = 거세. 1 = 수컷, 2 = 암컷이다. get_sex 함수를 통해 "NUMBER_SEX"에 값을 넣어준다.
df_x = df[['NUMBER_SEX', 'RCHOSE_BDWGH']]
df_y = df[['BND_WT']]
위의 코드는 독립 변수와 종속 변수를 나눠주는 것이다. df_x는 독립 변수(원인), df_y는 종속 변수(결과)이다.
X_train, X_test, y_train, y_test = train_test_split(df_x, df_y, test_size=0.3, random_state=121)
위의 코드는 평가 데이터와 예측 데이터를 나눠주는 것이다. test_size = 0.3은 전체 데이터의 30%를 예측 데이터로 설정해주겠다는 뜻이다. random_state는 평가 데이터와 예측 데이터를 섞어주는 시드 값이다.
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
위의 코드는 선형 회귀 모델을 만들고, 학습 데이터로 모델을 학습시켜주는 것이다.
lr_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, lr_pred)
위의 코드에서 첫째 줄은 학습된 모델에 평가 데이터를 넣어주어 예측된 결과를 lr_pred에 저장해주는 것이고, 두 번째 줄은 mae 방식으로 실제 정답 데이터와 lr_pred의 오차를 비교한 값을 저장해주는 것이다.
print(round(mae, 2))
1.3
지금까지 만든 선형 회귀 모델의 오차값을 출력하면 1.3이 나온다.
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
[Machine Learning] 영화 관객수 예측 모델 (5) (0) | 2021.02.24 |
---|---|
[Machine Learning] 영화 관객수 예측 모델 (4) (0) | 2021.02.23 |
[Machine Learning] 영화 관객수 예측 모델 (3) (0) | 2021.02.19 |
[Machine Learning] 영화 관객수 예측 모델 (2) (0) | 2021.02.18 |
[Machine Learning] 영화 관객수 예측 모델 (1) (0) | 2021.02.17 |