#판다스 패키지 소환
import pandas as pd
#레몬에이드 csv자료 가져오기
lemonade = pd.read_csv('https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv')
#독립변수 지정
independent = lemonade[['온도']]
#종속변수 지정
dependent = lemonade[['판매량']]
#모델 만들기
import tensorflow as tf
#독립변수입력값을 위한 모델 독립변수의 세로컬럼이 한개여서 왜냐면 {lemonade.head(5)}으로 확인
x = tf.keras.layers.Input(shape=[1])
#종속변수의 컬럼의 갯수가 1개여서 dense(1)그리고 원인을 넣어야하니까 X
y = tf.keras.layers.Dense(1)(x)
#그렇게 만들어진 값으로 계산을 해야하니까 X,y를 모델(판단력)에 넣으면 완성
model = tf.keras.models.Model(x,y)
#loss = 'mse' mean squared error 제곱평균이라는데 자세한 식은 검색 어차피 문과라 잘 몰라요. compile은 학습방법
model.compile(loss='mse')
model.fit(independent,dependent ,epochs=1000)
#독립 종속변수를 넣어주고 epochs 수만큼 학습 합니다 여기서 vervose는 학습과정을 보여줄지 말지를 결정하는 변수값.
model.fit(independent,dependent ,epochs=50 , verbose=0)
#마지막 나온 모델을 가지고 원인이 15도일때 판매량은 몇이 나오는 지 확인해봄
print("Predictions: " , model.predict([15]))
- 라이브러리 사용
- pandas와 tensorflow keras사용
- 데이터 준비
- 레몬에이드 DB(scv)를 가져와서 데이터를 확인합니다.
- 이때 지도학습회귀의 경우 독립변수와 종속변수를 나눠서 변수로 선언합니다.
- 레몬에이드의 경우 온도와 판매량이 있습니다.
온도 판매량 0 20 40 1 21 42 2 22 44 3 23 46 4 24 48 5 25 50
- 모델을 만듭니다(어떤 가설을 가질지 준비하는 과정)
- 독립변수,레이어지정
- 종속변수Dense레이어 지정
- 케라스 모델에 xy를 넣어주고 loss는 mse로 컴파일
- 모델을 학습합니다(fit)하는 과정
- model.fit(independent,dependent ,epochs=5000 , verbose=0)
- model을 학습시키는 과정중에 매개변수로 독립변수와 종속변수를 넣어주고 epochs반복횟수를 정한다 이때 vervose는 과정을 노출할것인지 아닌지 정하는 부분
- 모델을 이용합니다.
- predict를 통해 독립변수를 넣어서 배열을 통째로 확인해보던지 아니면 궁금한 값을 넣어 예상결과를 도출
Boston 집값 구하기
crim | zn | indus | chas | nox | rm | age | dis | rad | tax | ptratio | b | lstat | medv | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | median Value | |
범죄율 | 강변 | 평균방 수 | 노후주택 비율 | 재산세율 | 학생/교사 비율 | 하위계층 비율 | 집값 | |||||||
1 | 0.00632 | 18 | 2.31 | 0 | 0.538 | 6.575 | 65.2 | 4.09 | 1 | 296 | 15.3 | 396.9 | 4.98 | 24 |
2 | 0.02731 | 0 | 7.07 | 0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2 | 242 | 17.8 | 396.9 | 9.14 | 21.6 |
3 | 0.02729 | 0 | 7.07 | 0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2 | 242 | 17.8 | 392.83 | 4.03 | 34.7 |
4 | 0.03237 | 0 | 2.18 | 0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3 | 222 | 18.7 | 394.63 | 2.94 | 33.4 |
5 | 0.06905 | 0 | 2.18 | 0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3 | 222 | 18.7 | 396.9 | 5.33 | 36.2 |
6 | 0.02985 | 0 | 2.18 | 0 | 0.458 | 6.43 | 58.7 | 6.0622 | 3 | 222 | 18.7 | 394.12 | 5.21 | 28.7 |
7 | 0.08829 | 12.5 | 7.87 | 0 | 0.524 | 6.012 | 66.6 | 5.5605 | 5 | 311 | 15.2 | 395.6 | 12.43 | 22.9 |
8 | 0.14455 | 12.5 | 7.87 | 0 | 0.524 | 6.172 | 96.1 | 5.9505 | 5 | 311 | 15.2 | 396.9 | 19.15 | 27.1 |
- 1~13까지가 원인 독립변수
- 14 > > median Value(집들의 중간값) 는 종속변수
- 만약 위의 인과관계공식을 만드려면 매우 어렵지만, 머신러닝을 통하면 쉽게 공식이나오고 예측이 가능함
#패키지 소환 import pandas as pd import tensorflow as tf #데이터 준비 boston = pd.read_csv('https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv') #데이터 확인하기 boston.head() #독립,종속 분리 independent = boston[['crim','zn','indus','chas','nox','rm','age','dis','rad','tax','ptratio','b','lstat']] dependent = boston[['medv']] #습관적으로 모양 확인하기 print(independent.shape,dependent.shape) #모델의 구조 만들기 #컬럼이 독립변수가 13개이니 13 x = tf.keras.layers.Input(shape=[13]) #종속변수가 1개이니 1 뒤에 꼭 독립변수(x) 넣어주기 y = tf.keras.layers.Dense(1)(x) model = tf.keras.models.Model(x,y) model.compile(loss="mse") model.fit(independent,dependent, epochs = 10000 ,verbose=0) model.fit(independent,dependent, epochs = 10 ) #모델을 이용하기 print(model.predict(independent[0:10])) print(independent[0:10]) #모델의 공식 확인하기 model.get_weights() #[array([[-1.0129092e-01], # [ 4.7717679e-02], # [-5.1099402e-03], # [ 2.6310833e+00], # [-7.2872348e+00], # [ 4.8635139e+00], # [-6.1530294e-03], # [-1.1923397e+00], # [ 2.3119268e-01], # [-1.0202449e-02], # [-6.4626241e-01], # [ 1.3245133e-02], # [-4.7502685e-01]], dtype=float32), array([16.656414], dtype=float32)]
- 결론적으로 모델의 수식
- medv(집값) = -1.0129092e-01*x1) + (4.7717679e-02 * x2) + (-5.1099402e-03 * x3) + (2.6310833e+00 * x4) + (-7.2872348e+00 * x5) + (4.8635139e+00 * x6) + (-6.1530294e-03 * x7) + (-1.1923397e+00 * x8) + ( 2.3119268e-01 * x9) + (-1.0202449e-02 * x10) + (-6.4626241e-01 * x11) + ( 1.3245133e-02 * x12) + (-4.7502685e-01 * x13 + 16.656414
위의 과정을 직접적으로 테스트 해보고싶은 그런 충동이 든다면 아래 워크시트에서 해결하면 됩니다 물론 유튜브강좌로 사용법을 보면서 따라하시면 됩니다.
https://docs.google.com/spreadsheets/d/11DAONRZ92ob0T0YRIT5KgU9vNeO28bYNvteu_-fbRV0/edit#gid=0
딥러닝 워크북
회귀 (mse) 온도,판매량,W,B,Loss,예측 (w*온도+b),예측 - 판매량,(예측 - 판매량)^2 21,42,1.96,0.55,0.1401,41.71,-0.29,0.0841 22,44,dLoss / dW,dLoss / dB,prevLoss,43.67,-0.33,0.1089 23,46,100.1531,4.3401,4.7187,45.63,-0.37,0.1369 24,48,nex
docs.google.com
드라이브 사본으로 꼭 만들고 테스트 하기 관련 강좌는
봉수골 개발자 이선비님~!!