ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [생활코딩 - 머신러닝 야학] 텐서플로우 day 1,2
    공부일기/머신러닝 야학 2020. 8. 23. 18:27

    이미지 출처: https://opentutorials.org/module/4966

     

    생활코딩 머신러닝 야학 머신러닝1을 다 학습하고 텐서플로우로 넘어왔다. 코딩을 몰라도 머신러닝을 체험(?)할 수 있는 오렌지3 강의도 있었지만, 코딩 공부도 같이 할 수 있게 코드를 직접 짜보는 수업을 택했다. 

     

     

    1 -2. 목표와 전략

     

     

    1 - 3. 지도학습의 빅픽처

    머신러닝의 프로세스를 설명한다. 그림으로 쉽게 나타내 보면 이렇다.

    이미지 출처: https://opentutorials.org/course/4548

    1 - 4. 환경설정

     

     

    1 - 5. 판다스

    표에서 변수는 열로 표현되고 관측치에 따라 값이 변화할 수 있다는 의미가 있다. 원인은 독립변수, 결과는 종속변수. 지도학습은 이 두 가지를 분리하는 것에서 시작할 수 있다.

     

    1 - 6. 판다스(실습)

    pd.read_scv('/경로/파일명.csv') # 파일 읽어오기
    print(데이터.shape) # 모양 확인하기
    데이터[['칼럼명1', '칼럼명2', '칼럼명3']] # 칼럼 선택하기
    print(데이터.columns) # 칼럼 이름 출력하기
    데이터.head() # 맨 위 5개 관측치 출력
    
    # 파일 읽어오기
    파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
    레모네이드 = pd.read_csv(파일경로)
    
    파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
    보스턴 = pd.read_csv(파일경로)
    
    파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv'
    아이리스 = pd.read_csv(파일경로)
    
    # 모양 확인하기
    print(레모네이드.shape)
    print(보스턴.shape)
    print(아이리스.shape)
    
    # 칼럼 출력하기
    print(레모네이드.columns)
    print(보스턴.columns)
    print(아이리스.columns)
    
    # 독립 변수와 종속변수 분리 후 출력하기
    독립 = 레모네이드[['온도']]
    종속 = 레모네이드[['판매량']]
    print(독립.shape, 종속.shape)
    
    독립 = 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax',
           'ptratio', 'b', 'lstat']]
    종속 = 보스턴[['medv']]
    print(독립.shape, 종속.shape)
    
    독립 = 아이리스[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
    종속 = 아이리스[['품종']]
    print(독립.shape, 종속.shape)

     

    1 - 7. 레모네이드 판매 예측

    # 모델의 구조 만들기
    X = tf.keras.layers.Input(shape=[1]) # 독립 변수의 개수: 1
    Y = tf.keras.layers.Dense(1)(X) # 종속 변수의 개수: 1
    model = tf.keras.models.Model(X,Y)
    model.compile(loss='mse')
    
    
    # 모델을 학습시키기
    model.fit(독립, 종속, epochs=1000) # epochs = 전체 데이터를 몇 번 반복하여 학습할 것인지 결정하는 수
    
    
    # 모델을 이용하기
    print("Predictions: ", model.predict([[15]]))

     

    1 - 8. 손실의 의미

    loss는 학습이 얼마나 진행되었는지 알려주는 부분이라고 볼 수 있다. 모델은 매 학습마다 조금씩 학습을 하게 되는데 각 학습이 끝날 때마다 그 시점의 모델이 얼마나 정답에 가까이 맞추고 있는지를 평가하는 지표가 loss다. 학습이 되면 될수록 점점 정확해진다. 

    예측과 정답을 비교해서 차이를 구하고, 그 차이를 제곱해서 평균을 낸 게 loss. loss가 0에 가까울수록 학습이 잘 된 모델.

     

     

    1 - 9. 레모네이드 판매 예측(실습)

    실제 colab을 통해 예측 결과를 출력해보니 대략 '온도'x2의 값이 출력됐다. 

Designed by Tistory.