딥러닝 이진 분류
# input 개수
n = x_train.shape[1]
# 메모리 정리
clear_session()
# 모델 생성
model_1 = Sequential([Input(shape=(n,)),
Dense(16, activation='relu'),
Dense(1, activation='sigmoid')])
# 모델 구조 확인
model_1.summary()
# 컴파일
model_1.compile(optimizer=Adam(learning_rate=0.0001), loss='binary_crossentropy')
# 모델 훈련
model_1.fit(x_train, y_train, epochs=200, validation_split=0.2, verbose=0)
# 예측
pred_1 = model_1.predict(x_val)
pred_1 = np.where(pred_1 > 0.5, 1, 0)
# 결과 출력
print(confusion_matrix(y_val, pred_1))
print(classification_report(y_val, pred_1))
딥러닝 다중분류
# 종속 변수 가변수화
data['Species'] = data['Species'].map({'setosa':0, 'versicolor':1, 'virginica':2})
# 컬럼 개수 생성
nfeatures = x_train.shape[1]
# 메모리 정리
clear_session()
# 모델 생성
model = Sequential( [Input(shape = (nfeatures,)),
Dense( 3, activation = 'softmax')] )
# 모델 요약
model.summary()
# 컴파일
model.compile(optimizer=Adam(learning_rate=0.1), loss= 'sparse_categorical_crossentropy')
# 모델 훈련
model.fit(x_train, y_train, epochs = 50, validation_split=0.2)
# 모델 예측
pred = model.predict(x_val)
# 확률 값을 정수로 변환
pred_1 = pred.argmax(axis=1)
# 결과 출력
print(confusion_matrix(y_val, pred_1))
print(classification_report(y_val, pred_1))
히든 레이어: 예측값과 실제값의 오차를 줄여주는 새로운 특징을 생