딥러닝 모델 디자인하는 법
Sequential을 쓰면 신경망 레이어들을 자동으로 만들어줌
사용 데이터셋
노드의 개수는 관습적으로 2의 배수를 사용
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64), #중간레이아
tf.keras.layers.Dense(128), #중간레이어
tf.keras.layers.Dense(1)
])
결과가 (0과 1로) 하나가 나와야하므로
마지막 출력 레이어에는 노드의 개수를 1로 주어줌
레이어를 디자인할때는 꼭 활성 함수가 있어야 함
tf.keras.layers.Dense(64, activation='sigmoid')
ex) sigmoid / tanh / relu / softmax
확률 예측 문제이므로 마지막 레이어는 항상 예측 결과를 도출해야함
sigmoid는 모든 값을 0-1 사이로 압축해줌 -> 딥러닝이 도출한 0과 1 사이의 결과를 확률로 해석할 수 있음
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64, activation='tanh'),
tf.keras.layers.Dense(128, activation='tanh'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
optimizer : 경사하강법에서 러닝레이트나 기울기값들을 조정하는 역할을 함
ex) adagrad / adadelta / rmspop / sgd / adam
loss : 손실함수
0인지 1 사이의 분류 / 확률예측문제에는 binary_crossentropy
metrix
x데이터로 y데이터를 추론해주세요
10번 학습을 시킬게요
x데이터 : 트레이닝 데이터 ! 주어진 데이터 셋에서는 gre / gpa / rank
y데이터 : 실제 정답 admit
epochs : 몇번 학습을 시킬지
x데이터 = [[데이터1], [데이터2], [데이터3], ...]
y데이터 = [정답1, 정답2, 정답3, ...]
pandas import
import pandas as pd
data = pd.read_csv('gpascore.csv')
print(data)
데이터 전처리하기
위와 같이 결측된 데이터가 있다면 ?
결측 데이터 확인하기
결측값 제거
특정 열의 최대 최소값 확인하기
리스트 안에 데이터를 담아줘요
y데이터 = data['admit'].values
pandas로 연 데이터를 dataframe 이라고 하는데,
거기에 붙일 수 있는 함수
iterrow()를 통해 한행씩 출력이 가능함
for i, rows in data.iterrows():
x데이터.append([rows['gre'], rows['gpa'], rows['rank']])
파이썬 일반 리스트는 ㄴㄴ
그래서 리스트를 numpy array 라는 자료형으로 변환해야함
model.fit(np.array(x데이터), np.array(y데이터), epochs=10)
numpy 는 파이썬으로 행렬 , 벡터 이런 거 만들때 사용하는 라이브러리
Epoch 1/10 : 전체 데이터셋을 한번써서 한번 학습이 이뤄졌음
loss : 예측값과 실제 데이터의 차이를 합산한 값, 손실값이 적을 수록 좋아요
accuaracy : 실제 예측값과 실제 데이터와 얼마나 정확히 맞는지 ! 높을수록 좋음
epochs 값을 올릴수록 성능 향상이 일어남
근데 가끔 epochs 값을 늘어도 accuracy나 loss 성능향상이 일어나지 않을수도 있음 이건운빨
예측값 = model.predict([[750, 3.70, 3], [400, 2.2, 1]])
print(예측값)
성능향상요소