목록AI (45)
개발학습일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUJlm9/btsGHj553PG/D6leZg9lok4yAcdukED9K1/img.png)
epoch_history : 객체에 저장된 통계치를 사용해 모델의 훈련 과정을 시각화할 수 있다 # 학습시킬때 변수에 저장하여 학습시킨다 epochs_history = model.fit(X_train, y_train, batch_size= 10, epochs= 100) # 저장된 변수의 히스토리는 딕트로 나온다 epochs_history.history import matplotlib.pyplot as plt # 차트로 나타내기 (위에서 확인한 history의 키값 입력) plt.plot(np.arange(1, 100+1), epochs_history.history['loss']) plt.xlabel('# epochs') plt.ylabel('Loss') plt.show()
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b8ShzS/btsGHG02iau/Sc0gXDG0qSYvSvAF3q56PK/img.png)
텐서플로우 옵티마이저 런닝레이트(학습률) 셋팅하기 : learning rate란 미분 기울기의 이동 보폭(step) 이다 : 숫자가 적을수록 파라미터의 오차를 줄이는 숫자가 조금씩 내려간다 : 에포크 와 마찬가지로 Learning rate의 값이 적합하지 않을 경우, Overflow가 발생할 수 있다 - 모델 컴파일 할때 원래는 옵티마이져를 문자열로 불러왔지만, 함수로 불러오면 런닝레이트 파라미터를 직접 지정 할 수 있다 런닝레이트 파라미터의 디폴트 값은 0.001이다 def build_model() : model = Sequential() model.add(Dense(64, 'relu', input_shape=(X_train.shape[1],))) model.add(Dense(64, 'relu')) m..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3okVX/btsGJLGSQ7G/sguaf6a54b13wZtKzZFN11/img.png)
딥러닝 텐서플로우 리그레션(수치예측) 문제 모델링 모델링 하기 전 데이터 전처리는 필수이다! 1. 데이터 확인 후 X, y 값 지정하기# 기본 데이터 통계치 확인df.describe()# nan값 확인df.isna().sum()# nan 값 있으면 제거df.dropna()# 학습을 위해 X,y값 지정 (X값은 예측에 필요한 컬럼, y는 예측할 값)X = df.loc[ : , '컬럼' : '컬럼' ]y = df['컬럼'] 2. 피처스케일링 _데이터 정규화하기- y 값을 정규화 할 경우 에러 주의 해야한다- 기본적으로 1개의 컬럼으로 y 값을 지정했을 경우 y는 1차원 데이터 시리즈로 되어있다 그래서 y를 피처스케일링 해주기 위해선 y.values.reshape( , )을 해줘야 한다 _ y.val..
![](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=..
![](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() # 비어있는 틀에 히든레이어..