기본 필요 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
두개의 히든레이어를 만들꺼면 한번더 하면 되지만 이때 두번째부터는 input이 없으니 빼면 된다
https://seonggongstory.tistory.com/127
model.add( Dense(units=8, activation= tf.nn.relu ) )
이때 액티베이션은 일괄 세팅이기때문에 첫번째 히든레이어와 맞춰줘야함
두개의 결과를 내는 인공지능 모델링의 액티베이션은 시그모이드로 나와야함
model.add( Dense(units = 1 , activation='sigmoid'))
https://seonggongstory.tistory.com/126
확인과정
model.summary()
지금까지 한거 브리핑
첫번재 레이어에 노드(딥러닝 그림에 동그라미갯수 6개 두번째는8개 아웃풋엔 1개 → 여기까지 내가 만든 시퀀설
인풋에 11개 +1(상수 무조건있음)
텐서플로우가 인풋과 노드에 선을 연결해줌( 이선을 가중치,weight,파라미터라 부름 다 맞는말임) 알아서 직접
선의 갯수(Param)는 12(인풋) * 6(노드) =72
컴파일하기
컴파일이란, 옵티마이저(optimaizer)와 로스펑션(loss function, 오차함수,손실함수 ), 검증방법을 셋팅
model.compile(optimizer='adam' , loss = 'binary_crossentropy' ,metrics= [ 'accuracy' ] )
2개로 분류하는 문제의 loss는 'binary_crossentropy' 바이너리_크로스엔트로피 로 설정
학습
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)
y_pred = (y_pred >0.5).astype(int) |
'파이썬 > 텐서플로우' 카테고리의 다른 글
Tensorflow 이미지분류(ANN) 과 Flatten (0) | 2022.12.29 |
---|---|
epoch history (0) | 2022.12.28 |
tensorflow legression 유형 모델링 하기 (0) | 2022.12.28 |
GridSearch를 이용한 최적의 하이퍼 파라미터 찾기 (0) | 2022.12.27 |
인공지능 모델링 함수 만들기 (0) | 2022.12.27 |