반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<머신러닝 관련 지난 글>

 

2021.07.19 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해할 수 있는 인공지능/머신러닝/딥러닝 개념 총정리

 

2021.09.01 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_1편. 머신러닝과 Scikit-learn 소개(ft. 지도학습, 비지도학습, 강화학습)

2021.09.07 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_2편. Scikit-learn 학습용 데이터 셋 불러오기(ft. 붓꽃 데이터)

2021.09.11 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_3편. 머신러닝 준비물! 학습/검증/예측 데이터(ft.과대적합과 과소적합)

2021.09.13 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_4편. 모델 학습과 분류 (ft. 붓꽃의 꽃잎, 꽃받침 데이터로 종류 예측하기)

2021.09.16 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_5편. 머신러닝 주요 분류(Classification) 알고리즘 5가지 총정리


오늘은 Scikit-learn 라이브러리를 이용해서 회귀 예측을 해보겠습니다.

 

예측에 활용할 데이터 셋은 '보스턴 주택 가격 데이터'입니다.

 

1. 관련 패키지 및 라이브러리 import

 

가장 먼저 해줄 일은 당연히 꼭 필요한 파이썬 패키지 및 라이브러리들을 불러와주는 것입니다.

# 데이터 셋을 다루기
import pandas as pd

# 보스턴 주택 가격 데이터 셋 불러오기
from sklearn.datasets import load_boston

# 데이터 셋을 훈련 셋과 테스트 셋으로 나누기
from sklearn.model_selection import train_test_split

# 선형 회귀 다루기
from sklearn.linear_model import LinearRegression

 

 

2. 데이터 셋 불러오기

 

다음으로 보스턴 데이터 셋을 불러와보겠습니다.

 

data = load_boston()

data

 

실행결과를 보면 아래와 같이 아주 지저분하게 나옵니다.

이런 데이터를 Pandas를 이용하면 아주 깔끔한 형태(데이터 프레임)로 정리가 가능합니다.

 

<여기서 잠깐>

 

scikit-learn에서 어떤 데이터 셋을 불러왔을 때, 데이터 항목들을 확인하려면 아래의 코드를 실행해주시면 됩니다.

print(data['DESCR'])

 

보스턴 주택 가격 데이터 셋은 아래와 같은 내용들이 나올텐데요.

 

한글로 번역하면 아래와 같습니다.

번호 컬럼 설명
1 CRIM 범죄율
2 ZN 25,000평방 피트 당 주거용 토지의 비율
3 INDUS 비소매(non-retail) 비즈니스 면적 비율
4 CHAS 찰스 강 더미 변수 (통로가 하천을 향하면 1, 그렇지 않으면 0)
5 NOX 산화 질소 농도 (천만 분의 일)
6 RM 주거 당 평균 객실 수
7 AGE 1940 년 이전에 건축된 자가 소유 점유 비율
8 DIS 5 개의 보스턴 고용 센터까지의 가중 거리
9 RAD 고속도로 접근성 지수
10 TAX 10,000 달러 당 전체 가치 재산 세율
11 PTRATIO 도시 별 학생-교사 비율
12 B 1000 (Bk-0.63) ^ 2 여기서 Bk는 도시 별 검정 비율입니다.
13 LSTAT 낮은 지위에 있는 인구의 비율(%)
14 MEDV 자가 주택의 중앙값 (1,000 달러 단위)

 

3. 판다스 데이터 프레임으로 정리하기

 

앞서 언급하였 듯이 복잡한 데이터 셋을 보기 좋은 형태로 정리해봅시다.

 

df = pd.DataFrame(data['data'], columns=data['feature_names'])

 

보스턴 데이터 셋의 data들을 데이터 프레임 형태로 바꿔주면서, 컬럼들이 의미하는 이름들을 붙여주는 코드입니다.

 

df.head( )를 통해 데이터를 확인해보면 아래와 같이 출력됩니다.

 

자세히 보니 가장 마지막 컬럼인 MEDV가 없는 것을 확인 할 수 있습니다.

 

왜냐하면 MEDV는 속성(feature)이 아닌 타겟(label), 즉 정답 값이기 때문입니다.

 

위에서 만든 데이터 프레임(df)에 데이터 셋의 target 데이터들을 'MEDV'라는 컬럼명으로 추가해줍니다.

df['MEDV'] = data['target']

 

다시 df.head( )를 통해 데이터를 확인해보면 아래와 같이 출력됩니다.

 

4. 훈련(Train) 셋과 테스트(Test) 셋으로 나누기

 

본격적인 머신러닝을 위해서 훈련 셋과 테스트 셋으로 나누어줍니다.

 

x_train, x_test, y_train, y_test = train_test_split(df.drop('MEDV', 1), df['MEDV'])

 

나눈 결과는 아래의 코드로 확인 할 수 있습니다.

 

x_train.shape, x_test.shape, y_train.shape, y_test.shape

<출력 결과>

 

5. 선형 회귀(Linear Regression) 모델 학습시키기

 

이제 데이터 셋은 모두 준비되었으니, 우선 train set로 모델을 학습시켜보겠습니다. 오늘 사용해볼 모델은 선형 회귀 모델입니다.

 

# LinearRegression 모델을 선정
model = LinearRegression(n_jobs=-1) #n_jobs = -1은 현재 컴퓨터의 CPU 코어를 모두 사용한다는 뜻

# 모델 학습
model.fit(x_train, y_train)

# 학습된 모델에 x_test 데이터 입력
pred = model.predict(x_test)

 

여기까지 따라오셨다면 pred에 예측한 값들이 들어있을텐데요.

 

오늘은 아주 간단하게 pred에 들어있는 값과 y_test에 들어있는 값을 몇개만 살펴보는 것으로 결과 확인을 해보겠습니다.

 

대충 확인하기 위한 코드이니 아주 허접함에 놀라지 마세요.

print(pred[:5])
print(y_test[:5])

가로로 출력된 값들이 예측값, 세로로 출력된 값들이 실제값입니다. 비슷하긴 한데 오차가 좀 있네요.

 

오늘 준비한 내용은 여기까지입니다.

 

다음 시간에는 예측 결과를 시각화 해보고, 오차의 정도도 계산해보겠습니다.

 


이 글이 도움이 되셨다면, 아래의 광고를 한 번씩만 눌러주시면 너무너무 감사하겠습니다!

 

반응형

+ Recent posts