실습을 진행하기전에 데이터를 먼저 살펴 보자.
각각의 행은 타운을 의미하고 각 열은 특성들을 의미한다.
이중에서 제일 중요한 열은 14번째 열인데, 해당 타운에있는 집값의 중앙 값이다.
일반적으로 평균값이 집단을 대표하기 좋은 지표이다.
하지만 어떤 경우에는 집단을 대표하기에는 매우취약하다.
단적으로 평균연봉을 보면 연봉이 매우높은사람의 금액이 너무 높아서 전체 평균연봉에 영향을 주고 그 때문에 전체를 대표하는 연봉으로 하기에는 괴리가 생긴다.
전체 집단의 수치와 비교하여 상이하고 높거나 낮아서 평균의 대표성을 무너트리는 값들을 이상치 라고 한다.
이러한 이상치 때문에 평균값이 대표성을 띄지 못할 때 중앙값을 쓴다.
이제 코드를 살펴보자 ..
위 코드에서 #2. 모델의 구조를 만듭니다 이부분에 대해 알아보면
X = tf.keras.layers.Input(shape=[13])은 독립 변수가 13개라는 의미이고,
Y = tf.keras.layers.Dense(1)(X) 는 종속 변수가 1개라는 의미이다.
그리고 13개의 입력으로부터 1개의 출력을 만들어내는 구조 생성한다.
그러므로 위 그림의 코드에서 2번째 줄은 13개의 독립 변수로 1개의 종속 변수에 대한 수식을 만드는 것이고 ,
컴퓨터는 학습 과정에서 w 와 b를 찾아낸다.
인공신경망에서 뉴련의 역할을 하는 것이 우리가 만든 모형과 수식이다.
그리고 이 모형을 퍼셉트론 이라고 부르고 , W는 weight, b는 bias 를 나타낸다.
12개의 입력변수와 2개의 종속 변수를 입력하면 수식이 2개가 생성 된다.
이 모델은 퍼셉트론 두 개가 병렬로 생성된 형태이다. 이 모델에서 찾아야하는 변수는 w값 24개와 b 값 2개 이다.
보스턴 집갑 예측 실습
가장 먼저 데이터를 불러와서 확인해 본다.
#라이브러리 사용
import tensorflow as tf
import pandas as pd
# 1.과거의 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
보스턴 = pd.read_csv(파일경로)
print(보스턴.columns)
보스턴.head()
그다음 독립변수와 종속 변수를 분리해 준다.
# 독립변수, 종속 변수 분리
독립 = 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax',
'ptratio', 'b', 'lstat']]
종속 = 보스턴 [['medv']]
print((독립.shape,종속.shape))
독립변수와 종속변수를 분리한 뒤에 shape를 통해 잘 분리 되었는지 꼭 확인해야한다.
모델의 구조를 생성한뒤 데이터로 모델을 학습한다 .
# 2. 모델의 구조 생성
X = tf.keras.layers.Input(shape=[13])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X,Y)
model.compile(loss='mse')
# 3.데이터로 모델을 학습(fit) 한다.
model.fit(독립,종속,epochs=1000,verbose=0)
model.fit(독립,종속,epochs=10)
1000번 학습한뒤 10번을 더 학습하는 이유는 1000번 학습하는 과정은 출력 되지않으므로, 학습이 잘 되었는지 확인할 수 없다.
그러므로 10번 학습을 더하면서 학습이 잘 됐는지 확인해 주는 작업이 필요한다.
마지막으로 모델을 이용해 결과를 살펴본다.
# 4. 모델을 이용.
model.predict(독립[:5])
종속[0:5]
예측결과와 실제 값의 차이가 있지만 짧은 몇줄로도 꽤 유사하게 가격을 예측했다.
그리고 모델에서 수식을 확인하고 싶으면 다음 코드로 확인 해 볼 수 있다.
# 모델의 수식 확인
model.get_weights()
'데이터 분석 > 코딩야학' 카테고리의 다른 글
코딩야학 - 히든레이어 (0) | 2020.08.24 |
---|---|
코딩야학 - 아이리스 품종 분류 (0) | 2020.08.22 |
코딩야학-레모네이드 판매 예측 실습 (0) | 2020.08.20 |
코딩야학-지도 학습 (0) | 2020.08.19 |
코딩야학-딥러닝 1 (0) | 2020.08.19 |