import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, roc_auc_score, precision_score
INPUT_DIM = 13
MY_EPOCH = 100
MY_BATCH = 32
MY_SPLIT = 0.4
data = pd.read_excel('heart.xls')
print(data.shape)
display(data.head())
data.describe()
data.info()
# 결측치 확인
print(data.isna().sum())
from sklearn.preprocessing import StandardScaler
X = data.drop('target', axis=1)
y = data['target']
scaler = StandardScaler()
scaled_data = scaler.fit_transform(X)
scaled_data = pd.DataFrame(scaled_data, columns=X.columns)
print(scaled_data.describe())
boxplot = scaled_data.boxplot(figsize=(10,7), showmeans=True)
plt.show()
X_train, X_test, y_train, y_test = train_test_split(scaled_data, y, test_size=MY_SPLIT, random_state=10)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
X_val, X_test, y_val, y_test = train_test_split(X_test, y_test, test_size=0.5, random_state=0)
X_val.shape, X_test.shape, y_val.shape, y_test.shape
# Ouput Shape (None, 1000): None-> 배치 사이즈가 정해지지 않아서 None으로 표기됨
from keras.layers import Dropout
from keras import regularizers
model = Sequential()
model.add(Dense(1000, activation='tanh', input_dim=INPUT_DIM, kernel_regularizer=regularizers.l2(0.02)))
model.add(Dense(1000, activation='tanh', kernel_regularizer=regularizers.l2(0.1)))
model.add(Dropout(rate=0.5))
model.add(Dense(1, activation='sigmoid'))
model.summary()
from keras.callbacks import TensorBoard
import datetime
# log_dir: 로그가 기록될 디렉토리 경로 (경로에 한글이 포함되면 안됨)
log_dir = 'c:\\Logs\\'+datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard = TensorBoard(log_dir=log_dir, histogram_freq=1)
from keras.callbacks import EarlyStopping
early_stop = EarlyStopping(monitor='val_loass', mode='min', patience=3)
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=MY_BATCH, epochs=MY_EPOCH, validation_data=(X_val, y_val),verbose=1, callbacks=[tensorboard, early_stop])
model.save('heart-disease.h5')
y_pred_prob = model.predict(X_test)
y_pred = (y_pred_prob > 0.5)
print('\n== CONFUSION MATRIX ==')
print(confusion_matrix(y_test, y_pred))
score = model.evaluate(X_test, y_test, verbose=1)#, callbacks=[tensorboard])
print('Loss:',score[0])
print('Accuracy:',score[1])
print('Precision:',precision_score(y_test, y_pred))
print('AUC:', roc_auc_score(y_test, y_pred_prob))
06. 활성화 함수, 출력함수, 손실함수, 최적화 함수 (0) | 2023.12.19 |
---|---|
05. Keras를 이용한 딥러닝 개발 절차 (0) | 2023.12.19 |
04. 딥러닝 알고리즘 종류 (0) | 2023.12.19 |
댓글 영역