목록2024/04 (90)
개발학습일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DqnOF/btsGIg1SGCz/vLXvA1zSw91Kqgn303DZUk/img.png)
텐서플로우 그리드 서치를 이용한 최적의 하이퍼 파라미터를 찾아보자 필요한 라이브러리 임폴트 # Tuning the ANN from scikeras.wrappers import KerasClassifier from sklearn.model_selection import GridSearchCV from keras.models import Sequential from keras.layers import Dense 텐서플로우 로 그리드 서치 하기 위해서 모델링하는 함수를 만든다 - def 로 함수 만들기 def build_model(optimizer='adam') : model = Sequential() model.add( Dense( units=8, activation= 'relu', input_shape=(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sjiPp/btsGIOxjIqD/BKkWQchoSTNDNH8eFWFoa1/img.png)
에포크(epoch)와 배치사이즈(batch_size) batch_size= n - n 자리에 한번 학습할때 몇개의 데이터를 넣어 학습할지 값을 입력 - 메모리의 한계와 속도 저하 때문에 대부분의 경우에는 한 번의 epoch에서 모든 데이터를 한번에 집어넣을 수 없다 그래서 데이터를 나누어 주는데 이때 몇 번 나누어 주는가를 iteration이라고 부르며, 각 iteration마다 주는 데이터 사이즈를 batch size라고함 epochs= n - n 자리에 해당 데이터를 몇번 반복해서 학습할지 값을 입력 - 한 번의 epoch는 신경망에서 전체 데이터 셋에 대해 forward pass(->)/backward pass(
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brtpM9/btsGH0Y3QKH/0MkvlDzwsYyvImpbjtrAFk/img.png)
더미 베리어블 트랩 (Dummy variable trap) : 딥러닝에서는 컬럼 하나가 연산에 아주 크게 작용하므로, 굳이 없어도 되는 불필요한 컬럼을 없애는 것이다 원핫 인코딩한 결과에서, 가장 왼쪽의 컬럼은 삭제해도 데이터를 표현하는 것에 있어서 아무 문제가 없다. - France, Germerny, Spain 3개 컬럼으로 원핫 인코딩 되는데 1 0 0 0 1 0 0 0 1 맨 왼쪽 France 컬럼을 삭제해도, Germerny, Spain 0 0 => France 1 0 => Germeny 0 1 => Spain 잘 입력 된다 1. 넘파이 어레이에서 첫 행빼고 억세스 하기 X = X[ : , 1: ] 2. 데이터 프레임으로 변환하여 드랍 X = pd.DataFrame(X).drop(0, axis=..
모델링이 끝나면 컴파일(Compile)을 해야한다 - 2개로 분류하는 문제 loss 는 'binary_crossentropy' 을 설정한다 컴파일이란 ? : 옵티마이저(Optimizer)와 로스펑션(Loss Function), 검증방법을 셋팅하는 것을 말한다 - Loss Function = 오차함수 또는 손실함수 # 2개로 분류하는 문제 loss 는 'binary_crossentropy' 을 설정한다 model.compile(optimizer= 'adam', loss= 'binary_crossentropy', metrics= [ 'accuracy' ]) # metrics= [ 'accuracy' ] 정확도로 검증 컴파일이 끝나면 전처리한 데이터로 학습시키고 평가하여 정확도를 확인한다 전처리한 데이터 - ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rlpu2/btsGGaHZYDS/xVfg07CeRGkx99kEK8DQ20/img.png)
딥러닝 분류의 문제인 ANN 텐서플로우 모델링 필요한 라이브러리 임폴트 import tensorflow as tf from tensorflow import keras from keras.models import Sequential from keras.layers import Dense 학습시킨 비어있는 인공 지능 model을 Sequential()로 만들어, add 함수로 히든 레이어를 추가하고 아웃풋 레이어도 추가한다 - 동그란모양의 노드를 이어주는 선을 웨이트나 파라미터라고 한다 activation= (함수) 에 sigmoid와 tanh는 기울기 소실때문에 히든레이어에 잘 사용하지 않는다 # 레이어를 담을 수 있는 비어있는 틀을 만든다 model = Sequential() # 비어있는 틀에 히든레이어..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUinlw/btsGGWWkTLS/0NDGZxzMJsiD3oSpyjOSN0/img.png)
옵티마이저(Oprimizer) 종류 - Optimizer란 loss function을 통해 구한 차이를 사용해 기울기를 구하고 Network의 parameter(W, b)를 학습에 어떻게 반영할 것인지를 결정하는 방법이다 - 현재 가장 많이 사용하는 옵티마이저는 Adam 이다
데이터 불균형 맞추기 필요한 라이브러리 임폴트 - 설치 안되어 있을 경우 pip install 검색 _ 구글에 pypi 검색해서 사이트에서 필요한 라이브러리 설치 명령어 찾기 from imblearn.over_sampling import SMOTE SMOTE() - 균형이 맞게 데이터 늘리거나 삭제하는 방법이 있는데, 일반적으로 늘리는 방법을 사용한다 - 늘리는 방법으로 코드를 작성해보자 # 변수에 저장하여 사용 sm = SMOTE(random_state=2) X, y = sm.fit_resample(X, y)
트레이닝용과 테스트용 데이터 나누기 필요한 라이브러리 임폴트 from sklearn.model_selection import train_test_split train_test_split() - 데이터셋을 학습용과 테스트용으로 나눠준다 train_test_split(X, y, test_size= 0.2, random_state=3) # test_size= 0.2 테스트에 20% 사용하겠다 일반적으로 0.2 나 0.25 사용한다 # 각 변수에 저장(순서대로 입력) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2, random_state=3)