1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
 
from tensorflow.keras.datasets import boston_housing
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense
from tensorflow.keras.optimizers import SGD,  Adam
 
print(tf.__version__)
 
 
# 데이터셋 생성
# 출처 : https://www.kaggle.com/uciml/pima-indians-diabetes-database/
# 특성별 스케일에 차이가 있으므로 전처리(정규화)를 해주면 좋다.
 
load_data = np.loadtxt('E:/dataset/diabetes.csv', delimiter=',')
 
x_train = load_data[:, 0:-1]
y_train = load_data[:, [-1]]
 
print(x_train.shape, y_train.shape)
 
mean = x_train.mean(axis=0)  # 각 특성에 대해 평균을 빼고, 표준편차로 나눈다.
x_train -= mean
std = x_train.std(axis=0)
x_train /= std
 
 
 
 
# 모델 구축
model = Sequential()
model.add(Dense(y_train.shape[1], activation='sigmoid', input_shape=(x_train.shape[1],)))
 
# 모델 컴파일 (모델을 로드하는 부분에서 수행함)
model.compile(optimizer=SGD(learning_rate=1e-2), loss='binary_crossentropy', metrics=['accuracy'])
model.summary()
 
# 모델 학습
# validation_split=0.2 => train_dataset에서 20% 비율로 validation_dataset 생성
hist = model.fit(x_train, y_train, epochs=300, validation_split=0.2, verbose=1)
 
 
# 모델 평가 및 예측
model.evaluate(x_train, y_train)
 
 
# 모델 저장 및 로드
# model.save("model_name.h5")
# model = tf.keras.models.load_model("model_name.h5")
 
 
# 모델 손실함수 추이확인
plt.title('loss')
plt.xlabel('epoch')
plt.ylabel('loss')
plt.grid()
 
plt.plot(hist.history['loss'], label='train_loss')
plt.plot(hist.history['val_loss'], label='validation_loss')
# plt.plot(hist.history['accuracy'], label='train_accuracy')
# plt.plot(hist.history['val_accuracy'], label='validation_accuracy')
 
plt.legend(loc='best')
 
plt.show()
 
 
cs

 

데이터셋을 다운받으면, 첫 번째 행을 삭제해줘야 한다. (열 이름)

 

반응형

+ Recent posts