본문 바로가기
머신러닝 공부중

lemonade회귀 , boston집값

by redeyes 2022. 1. 11.
#판다스 패키지 소환
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]))
  1. 라이브러리 사용
    • pandas와 tensorflow keras사용
  2. 데이터 준비
    • 레몬에이드 DB(scv)를 가져와서 데이터를 확인합니다.
    • 이때 지도학습회귀의 경우 독립변수와 종속변수를 나눠서 변수로 선언합니다.
    • 레몬에이드의 경우 온도와 판매량이 있습니다.
        온도 판매량
      0 20 40
      1 21 42
      2 22 44
      3 23 46
      4 24 48
      5 25 50
  3. 모델을 만듭니다(어떤 가설을 가질지 준비하는 과정)
    • 독립변수,레이어지정
    • 종속변수Dense레이어 지정
    • 케라스 모델에 xy를 넣어주고 loss는 mse로 컴파일
  4. 모델을 학습합니다(fit)하는 과정
    • model.fit(independent,dependent ,epochs=5000 , verbose=0)
    • model을 학습시키는 과정중에 매개변수로 독립변수와 종속변수를 넣어주고 epochs반복횟수를 정한다 이때 vervose는 과정을 노출할것인지 아닌지 정하는 부분
  5. 모델을 이용합니다.
    • 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

드라이브 사본으로 꼭 만들고 테스트 하기 관련 강좌는

봉수골 개발자 이선비님~!!

https://youtu.be/ItKi514Ly-4

'머신러닝 공부중' 카테고리의 다른 글

독립변수 종속변수  (0) 2022.01.07
Table  (0) 2022.01.07
딥러닝  (0) 2022.01.05