파이썬/텐서플로우

tensorflow : Logistic Classification유형 모델링 하기

공부짱짱열심히하기 2022. 12. 27. 16:38

기본 필요 import문

import numpy as np
import pandas as pd

머신러닝과 같은 순서를 가졌다고 생각하면 된다.

from sklearn.preprocessing import OneHotEncoder , LabelEncoder
from sklearn.compose import ColumnTransformer

1.nan데이터 확인

2.X,y데이터 분리

3.분리된 X데이터에서 인코딩하기

 2개는 레이블

 3개이상은 원핫

 

4.피쳐스케일링 하기

딥러닝은 무조건 피처스케일링을 해줘야 한다.

from sklearn.preprocessing import MinMaxScaler

5.트레이닝 셋 나누기

from sklearn.model_selection import train_test_split

 


딥러닝 모델링

import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense

레이어를 담을 틀

 
model = Sequential()
 
 
 
히든 레이어 설정
model.add( Dense(units = n , activation='액티베이션'  ,input_shape=(컬럼수,)  ) )

https://seonggongstory.tistory.com/132

 

딥러닝 하이퍼파라미터 용어 : Dense/units/activation/input_shape

Dense 모델안에 들어가는 레이어를 표현 (레이어 한줄) , 뉴런의 입력과 출력을 연결해주는 역할 units = 노드 숫자 activation(활성화함수)= 받은 가중치(웨이트)를 결과값으로 바꿔주는 함수 https://seon

seonggongstory.tistory.com

두개의 히든레이어를 만들꺼면 한번더 하면 되지만 이때 두번째부터는 input이 없으니 빼면 된다

https://seonggongstory.tistory.com/127

 

 

딥러닝 하이퍼 파라미터 용어 : activation Functions (수정)

액티베이션 활성화 함수: 딥러닝 네트워크에서 노드에 입력된 값들을 비선형 함수에 통과시킨 후 다음 레이어로 전달하는데, 이 때 사용하는 함수를 활성화 함수(Activation Function)라고 한다. 선형

seonggongstory.tistory.com

model.add( Dense(units=8, activation= tf.nn.relu ) )

이때 액티베이션은 일괄 세팅이기때문에 첫번째 히든레이어와 맞춰줘야함

 

두개의 결과를 내는 인공지능 모델링의 액티베이션은 시그모이드로 나와야함

model.add( Dense(units = 1 , activation='sigmoid'))

https://seonggongstory.tistory.com/126

 

딥러닝 하이퍼 파라미터 용어 : epoch와 batch size

인공지능을 개발하고 나서 인공지능을 돌릴때 model.fit(X_train,y_train,batch_size = , epochs= ) 여기서 말하는 epoch와 batch 사이즈란? batch size 메모리의 한계와 속도 저하 때문에 대부분의 경우에는 한 번의

seonggongstory.tistory.com

 

 

확인과정

model.summary()

지금까지 한거 브리핑
첫번재 레이어에 노드(딥러닝 그림에 동그라미갯수 6개 두번째는8개 아웃풋엔 1개 → 여기까지 내가 만든 시퀀설 
인풋에 11개 +1(상수 무조건있음)
텐서플로우가 인풋과 노드에 선을 연결해줌( 이선을 가중치,weight,파라미터라 부름 다 맞는말임) 알아서 직접
선의 갯수(Param)는 12(인풋) * 6(노드) =72

컴파일하기

컴파일이란, 옵티마이저(optimaizer)와 로스펑션(loss function, 오차함수,손실함수 ), 검증방법을 셋팅
model.compile(optimizer='adam' , loss = 'binary_crossentropy' ,metrics= [ 'accuracy' ]  )

 


학습

model.fit(X_train,y_train,batch_size = n, epochs= n)

평가

model.evaluate(X_test,y_test)
from sklearn.metrics import confusion_matrix, accuracy_score

시그모이드이기때문에 0과1사이로 나옴

y_pred = (y_pred >0.5).astype(int)

트루펄스를 숫자로 바꿔서 표현하면 됨

 

accuracy_score(y_test,y_pred)
 = ( 맞은갯수) / 전체 수

 

순서

import numpy as np
import pandas as pd

1.NAN처리

2.X,y데이터 분리

3.분리된 X데이터에서 인코딩하기
4.피쳐스케일링 하기
5.트레이닝 셋 나누기


6.딥러닝
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense


model = Sequential()

model.add( Dense(units = n , activation='액티베이션'  ,input_shape=(컬럼수,)  ) )

model.add( Dense(units=8, activation= tf.nn.relu ) )

model.add( Dense(units = 1 , activation='sigmoid'))
두개의 결과를 내는 인공지능 모델링의 액티베이션은 시그모이드로 나와야함


7.컴파일

model.compile(optimizer='adam' , loss = 'binary_crossentropy' ,metrics= [ 'accuracy' ]  )
2개로 분류하는 문제의 loss는 'binary_crossentropy' 바이너리_크로스엔트로피 로 설정


8.학습
model.fit(X_train,y_train,batch_size = 10, epochs= 20)

9.평가
model.evaluate(X_test,y_test)
from sklearn.metrics import confusion_matrix, accuracy_score
y_pred = (y_pred >0.5).astype(int)