오늘은 딥러닝 실습시 가장 많이 사용하는 사이킷런에서 제공하는 보스턴 집값을 이용하여 예측하는 모델을 만들어 보도록 하겠습니다.
지도학습의 실습과정은 다음과 같습니다.
1. 과거의 데이터를 준비합니다.(과거의 데이터에서 원인과 결과 즉 독립변수와 종속변수를 찾아 냅니다.)
2. 모델의 구조를 만듭니다. (레모네이드 판매량이 온도에 따라 달라지는데 이때 온도를 독립변수, 판매량을 종속변수로 하는 모델을 만들어 봅니다.)
3. 데이터로 모델을 학습합니다.
4. 모델을 이용합니다.
//colab.research.google.com/
실습은 코랩을 이용해서 진행하겠습니다.
#보스턴 주택 데이터셋 from sklearn import datasets 보스턴 = datasets.load_boston() print(보스턴.keys())키값을 확인해 보면 위와 같이 data, target, feature_names,DESCR,filename,data_module 가 있습니다.
키값의 의미
data : 학습해야 할 feed용 데이터
target : 라벨로 각 데이터의 결정값
feature_names : 데이터셋의 column 명
DESCR : 데이터셋에 대한 설명
filename : dataset을 다운로드 받는 경로
print(보스턴['feature_names'])columns 명을 확인 해 보면 위와 같이 13개의 특성이 있는 것을 확인 할 수 있습니다.
print(보스턴['DESCR'])DESCR을 확인해 보면 각 특성에 대한 설명을 확인해 볼 수가 있습니다.
CRIM : 자치시별 1인당 범죄율
ZN : 25000 평방피트를 초과하는 거주지역의 비율
INDUS : 비소매 상업지역이 점유하고 있는 토지의 비율
CHAS : Charles 강의 경계에 위치한 경우 1 , 아니면 0
NOX : 10 ppm 당 농축 일산화 질소
RM : 주택 1가구당 평균 방의 개수
AGE : 1940년 이전에 건축된 소유주택의 비율
DIS : 5개의 보스턴 직업센터까지의 접근성 지수
RAD : 방사형 도로까지의 접근성 지수
TAX : 10000달러당 재산세율
PTRATO : 자치시별 학생/교사비율
B : Bk는 자치시별 흑인의 비율
LSTAT : 모집단의 하위계측의 비율
MEDV : 본인 소유의 주택가격(중앙값)(단위:$1000)
이때 집값을 예측하는 모델을 만들어 봅시다.
import pandas as pd 독립 = pd.DataFrame(보스턴['data'],columns=보스턴['feature_names']) 종속 = pd.DataFrame(보스턴['target'],columns=['target']) print(독립.head()) print(종속.head())여기서 X = tf.keras.layers.Input(shape=[13]) 의 의미는 독립변수의 갯수가 13개 이므로 13이며
Y = tf.keras.layers.Dense(1)(X) 의 의미는 종속변수의 갯수가 1개 결과값을 출력하는 것을 의미합니다.
model.compile(loss='mse') 는 손실함수를 평균제곱오차(mean Squared Error)를 사용하겠다는 것을 의미합니다.
이렇게 만든 모델은 다음과 같은 형태의 모델이 만들어 집니다.
이것을 수식으로 표현하면 y = w1x1 + w2x2 + .... + w13x13 + b 와 같습니다.
여기서
Y = tf.keras.layers.Dense(1)(X)이 부분이 이러한 수식을 만드는 것이고
이 부분이 w와 b를 찾는 부분입니다.
이러한 부분이 뉴런 하나를 만드는 것이고 이렇게 만드는 이론을 퍼셉트론(Perceptron) 이라고 합니다.
w는 가중치(weight) b는 편향(bias)라고 부릅니다.
########################### # 3.데이터로 모델을 학습(FIT)합니다. model.fit(독립, 종속, epochs=1000, verbose=0)여기서 epochs=1000의 의미는 1000번 학습하겠다는 의미이며 verbose=0 은 학습중 아무것도 출력하지 않는 것을 의미합니다.
verbose = 0 : 아무것도 출력하지 않는 상태
verbose = 1 : 훈련의 진행도를 보여주는 진행막대
verbose = 2 : 미니 배치마다 손실정보를 출력
########################### # 4. 모델을 이용합니다 print(model.predict(독립[5:10])) # 종속변수 확인 print(종속[5:10])이 의미는 w1~w13 까지의 값과 b의 값이 훈련을 통해 계산이 된 값을 의미합니다.
위의 보스턴 집값은 회귀를 이용해서 숫자를 예측하는 모델을 만들어 보았습니다.
이렇게 만들어진 모델이 약간의 오차가 있는 것을 확인 할 수 있는데요~
이번 시간에는 이렇게 회귀모델을 만들어 보면서 개념을 이해 하는 것에 의의를 두시면 될것 같습니다.
<참고>
생활코딩 - //opentutorials.org/course/4570/28974