05 Sonar Train Test

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

2020. 10. 5.

05_Sonar_Train_Test

In [ ]:

#from keras.models import Sequential


from tensorflow.keras.models import Sequential
#from keras.layers.core import Dense
from tensorflow.keras.layers import Dense
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy
import tensorflow as tf
# seed 값 설정
seed = 0
numpy.random.seed(seed)
tf.random.set_seed(3)

df = pd.read_csv('../dataset/sonar.csv', header= None )


'''
print(df.info())
print(df.head())
'''
dataset = df.values
X = dataset[:,0:60]
X = numpy.asarray(X).astype(numpy.float32) # 라인 추가 by neo
Y_obj = dataset[:,60]

e = LabelEncoder()
e.fit(Y_obj)
Y = e.transform(Y_obj)

과적합을 방지하려면 어떻게 해야 할까? 먼저 학습을 하는 데이터셋과 이를 테스트할 데이터셋을 완전히 구분


한 다음 학습과 동시에 테스트를 병행하며 진행하는 것이 한 방법. 데이터셋이 총 100개의 샘플로 이루어져 있
다면 다음과 같이 두 개의 셋으로 나눔.

신경망을 만들어 70개의 샘플로 학습을 진행한 후 이 학습의 결과를 저장함. 이렇게 저장된 파일을 ‘모델’이라
고 부름. 모델은 다른 셋에 적용할 경우 학습 단계에서 각인되었던 그대로 다시 수행함. 나머지 30개의 샘플로
실험해서 정확도를 살펴보면 학습이 얼마나 잘 되었는지를 알 수 있는 것.

In [ ]:

# 학습 셋과 테스트 셋의 구분
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=seed)

불러온 X 데이터와 Y 데이터에서 각각 정해진 비율(%)만큼 구분하여 한 그룹은 학습에 사용함. 다른 한 그룹


은 테스트에 사용하게 하는 함수가 sklearn 라이브러리의 train_test_split( ) 함수임 학습셋을 70%, 테스트셋
을 30%로 설정했을때의 예.

localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 1/10


2020. 10. 5. 05_Sonar_Train_Test

In [3]:

model = Sequential()
model.add(Dense(24, input_dim=60, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error',
optimizer='adam',
metrics=['accuracy'])

model.fit(X_train, Y_train, epochs=130, batch_size=5)

# 테스트셋에 모델 적용
print("\n Test Accuracy: %.4f " % (model.evaluate(X_test, Y_test)[1]))

localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 2/10


2020. 10. 5. 05_Sonar_Train_Test

Epoch 1/130
29/29 [==============================] - 0s 601us/step - loss: 0.2472 - accuracy:
0.4897
Epoch 2/130
29/29 [==============================] - 0s 804us/step - loss: 0.2317 - accuracy:
0.6414
Epoch 3/130
29/29 [==============================] - 0s 834us/step - loss: 0.2241 - accuracy:
0.6207
Epoch 4/130
29/29 [==============================] - 0s 928us/step - loss: 0.2139 - accuracy:
0.6897
Epoch 5/130
29/29 [==============================] - 0s 642us/step - loss: 0.2034 - accuracy:
0.7379
Epoch 6/130
29/29 [==============================] - 0s 911us/step - loss: 0.1925 - accuracy:
0.7517
Epoch 7/130
29/29 [==============================] - 0s 571us/step - loss: 0.1819 - accuracy:
0.7517
Epoch 8/130
29/29 [==============================] - 0s 912us/step - loss: 0.1729 - accuracy:
0.8069
Epoch 9/130
29/29 [==============================] - 0s 639us/step - loss: 0.1650 - accuracy:
0.7862
Epoch 10/130
29/29 [==============================] - 0s 921us/step - loss: 0.1618 - accuracy:
0.8069
Epoch 11/130
29/29 [==============================] - 0s 788us/step - loss: 0.1544 - accuracy:
0.8138
Epoch 12/130
29/29 [==============================] - 0s 867us/step - loss: 0.1552 - accuracy:
0.8000
Epoch 13/130
29/29 [==============================] - 0s 806us/step - loss: 0.1497 - accuracy:
0.8000
Epoch 14/130
29/29 [==============================] - 0s 958us/step - loss: 0.1435 - accuracy:
0.8069
Epoch 15/130
29/29 [==============================] - 0s 961us/step - loss: 0.1390 - accuracy:
0.8207
Epoch 16/130
29/29 [==============================] - 0s 999us/step - loss: 0.1364 - accuracy:
0.8000
Epoch 17/130
29/29 [==============================] - 0s 784us/step - loss: 0.1333 - accuracy:
0.8345
Epoch 18/130
29/29 [==============================] - 0s 666us/step - loss: 0.1266 - accuracy:
0.8345
Epoch 19/130
29/29 [==============================] - ETA: 0s - loss: 0.1272 - accuracy: 1.00 -
0s 999us/step - loss: 0.1308 - accuracy: 0.8276
Epoch 20/130
29/29 [==============================] - 0s 909us/step - loss: 0.1214 - accuracy:
0.8621
Epoch 21/130
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 3/10
2020. 10. 5. 05_Sonar_Train_Test

29/29 [==============================] - 0s 827us/step - loss: 0.1186 - accuracy:


0.8690
Epoch 22/130
29/29 [==============================] - 0s 845us/step - loss: 0.1154 - accuracy:
0.8483
Epoch 23/130
29/29 [==============================] - 0s 906us/step - loss: 0.1124 - accuracy:
0.8621
Epoch 24/130
29/29 [==============================] - 0s 858us/step - loss: 0.1077 - accuracy:
0.8897
Epoch 25/130
29/29 [==============================] - 0s 938us/step - loss: 0.1102 - accuracy:
0.8414
Epoch 26/130
29/29 [==============================] - 0s 647us/step - loss: 0.1029 - accuracy:
0.8621
Epoch 27/130
29/29 [==============================] - 0s 941us/step - loss: 0.0996 - accuracy:
0.8690
Epoch 28/130
29/29 [==============================] - 0s 718us/step - loss: 0.0958 - accuracy:
0.8828
Epoch 29/130
29/29 [==============================] - 0s 879us/step - loss: 0.0939 - accuracy:
0.8759
Epoch 30/130
29/29 [==============================] - 0s 932us/step - loss: 0.0955 - accuracy:
0.8759
Epoch 31/130
29/29 [==============================] - 0s 791us/step - loss: 0.0956 - accuracy:
0.8690
Epoch 32/130
29/29 [==============================] - 0s 963us/step - loss: 0.0897 - accuracy:
0.9034
Epoch 33/130
29/29 [==============================] - 0s 904us/step - loss: 0.0836 - accuracy:
0.9034
Epoch 34/130
29/29 [==============================] - 0s 884us/step - loss: 0.0850 - accuracy:
0.8966
Epoch 35/130
29/29 [==============================] - 0s 926us/step - loss: 0.0785 - accuracy:
0.9103
Epoch 36/130
29/29 [==============================] - 0s 977us/step - loss: 0.0766 - accuracy:
0.9103
Epoch 37/130
29/29 [==============================] - 0s 897us/step - loss: 0.0729 - accuracy:
0.9172
Epoch 38/130
29/29 [==============================] - 0s 670us/step - loss: 0.0715 - accuracy:
0.9310
Epoch 39/130
29/29 [==============================] - 0s 803us/step - loss: 0.0680 - accuracy:
0.9310
Epoch 40/130
29/29 [==============================] - 0s 863us/step - loss: 0.0694 - accuracy:
0.9379
Epoch 41/130
29/29 [==============================] - 0s 693us/step - loss: 0.0683 - accuracy:
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 4/10
2020. 10. 5. 05_Sonar_Train_Test

0.9241
Epoch 42/130
29/29 [==============================] - 0s 893us/step - loss: 0.0639 - accuracy:
0.9379
Epoch 43/130
29/29 [==============================] - 0s 716us/step - loss: 0.0661 - accuracy:
0.9241
Epoch 44/130
29/29 [==============================] - 0s 844us/step - loss: 0.0611 - accuracy:
0.9379
Epoch 45/130
29/29 [==============================] - 0s 781us/step - loss: 0.0559 - accuracy:
0.9379
Epoch 46/130
29/29 [==============================] - 0s 922us/step - loss: 0.0544 - accuracy:
0.9379
Epoch 47/130
29/29 [==============================] - 0s 817us/step - loss: 0.0516 - accuracy:
0.9517
Epoch 48/130
29/29 [==============================] - 0s 861us/step - loss: 0.0493 - accuracy:
0.9448
Epoch 49/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0455 - accuracy: 0.
9517
Epoch 50/130
29/29 [==============================] - 0s 971us/step - loss: 0.0462 - accuracy:
0.9655
Epoch 51/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0468 - accuracy: 0.
9448
Epoch 52/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0427 - accuracy: 0.
9586
Epoch 53/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0422 - accuracy: 0.
9517
Epoch 54/130
29/29 [==============================] - 0s 860us/step - loss: 0.0353 - accuracy:
0.9793
Epoch 55/130
29/29 [==============================] - 0s 791us/step - loss: 0.0368 - accuracy:
0.9724
Epoch 56/130
29/29 [==============================] - 0s 791us/step - loss: 0.0326 - accuracy:
0.9931
Epoch 57/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0323 - accuracy: 0.
9862
Epoch 58/130
29/29 [==============================] - 0s 928us/step - loss: 0.0332 - accuracy:
0.9862
Epoch 59/130
29/29 [==============================] - 0s 791us/step - loss: 0.0305 - accuracy:
0.9931
Epoch 60/130
29/29 [==============================] - 0s 757us/step - loss: 0.0296 - accuracy:
0.9793
Epoch 61/130
29/29 [==============================] - 0s 894us/step - loss: 0.0279 - accuracy:
0.9862
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 5/10
2020. 10. 5. 05_Sonar_Train_Test

Epoch 62/130
29/29 [==============================] - 0s 757us/step - loss: 0.0282 - accuracy:
0.9862
Epoch 63/130
29/29 [==============================] - 0s 686us/step - loss: 0.0255 - accuracy:
0.9793
Epoch 64/130
29/29 [==============================] - 0s 653us/step - loss: 0.0233 - accuracy:
1.0000
Epoch 65/130
29/29 [==============================] - 0s 825us/step - loss: 0.0215 - accuracy:
0.9931
Epoch 66/130
29/29 [==============================] - 0s 688us/step - loss: 0.0233 - accuracy:
0.9862
Epoch 67/130
29/29 [==============================] - 0s 791us/step - loss: 0.0177 - accuracy:
1.0000
Epoch 68/130
29/29 [==============================] - 0s 619us/step - loss: 0.0198 - accuracy:
1.0000
Epoch 69/130
29/29 [==============================] - 0s 824us/step - loss: 0.0195 - accuracy:
1.0000
Epoch 70/130
29/29 [==============================] - 0s 653us/step - loss: 0.0274 - accuracy:
1.0000
Epoch 71/130
29/29 [==============================] - 0s 737us/step - loss: 0.0175 - accuracy:
0.9931
Epoch 72/130
29/29 [==============================] - 0s 672us/step - loss: 0.0150 - accuracy:
1.0000
Epoch 73/130
29/29 [==============================] - 0s 661us/step - loss: 0.0211 - accuracy:
0.9862
Epoch 74/130
29/29 [==============================] - 0s 787us/step - loss: 0.0138 - accuracy:
1.0000
Epoch 75/130
29/29 [==============================] - 0s 680us/step - loss: 0.0133 - accuracy:
1.0000
Epoch 76/130
29/29 [==============================] - 0s 825us/step - loss: 0.0128 - accuracy:
1.0000
Epoch 77/130
29/29 [==============================] - 0s 851us/step - loss: 0.0124 - accuracy:
1.0000
Epoch 78/130
29/29 [==============================] - 0s 723us/step - loss: 0.0147 - accuracy:
1.0000
Epoch 79/130
29/29 [==============================] - 0s 662us/step - loss: 0.0129 - accuracy:
1.0000
Epoch 80/130
29/29 [==============================] - 0s 757us/step - loss: 0.0119 - accuracy:
0.9931
Epoch 81/130
29/29 [==============================] - 0s 802us/step - loss: 0.0100 - accuracy:
1.0000
Epoch 82/130
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 6/10
2020. 10. 5. 05_Sonar_Train_Test

29/29 [==============================] - 0s 711us/step - loss: 0.0115 - accuracy:


1.0000
Epoch 83/130
29/29 [==============================] - 0s 740us/step - loss: 0.0107 - accuracy:
1.0000
Epoch 84/130
29/29 [==============================] - 0s 768us/step - loss: 0.0100 - accuracy:
1.0000
Epoch 85/130
29/29 [==============================] - 0s 747us/step - loss: 0.0080 - accuracy:
1.0000
Epoch 86/130
29/29 [==============================] - 0s 808us/step - loss: 0.0073 - accuracy:
1.0000
Epoch 87/130
29/29 [==============================] - 0s 694us/step - loss: 0.0073 - accuracy:
1.0000
Epoch 88/130
29/29 [==============================] - 0s 733us/step - loss: 0.0079 - accuracy:
1.0000
Epoch 89/130
29/29 [==============================] - 0s 722us/step - loss: 0.0067 - accuracy:
1.0000
Epoch 90/130
29/29 [==============================] - 0s 693us/step - loss: 0.0074 - accuracy:
1.0000
Epoch 91/130
29/29 [==============================] - 0s 719us/step - loss: 0.0078 - accuracy:
1.0000
Epoch 92/130
29/29 [==============================] - 0s 669us/step - loss: 0.0065 - accuracy:
1.0000
Epoch 93/130
29/29 [==============================] - 0s 646us/step - loss: 0.0068 - accuracy:
1.0000
Epoch 94/130
29/29 [==============================] - 0s 800us/step - loss: 0.0050 - accuracy:
1.0000
Epoch 95/130
29/29 [==============================] - 0s 706us/step - loss: 0.0057 - accuracy:
1.0000
Epoch 96/130
29/29 [==============================] - 0s 755us/step - loss: 0.0046 - accuracy:
1.0000
Epoch 97/130
29/29 [==============================] - 0s 671us/step - loss: 0.0046 - accuracy:
1.0000
Epoch 98/130
29/29 [==============================] - 0s 687us/step - loss: 0.0051 - accuracy:
1.0000
Epoch 99/130
29/29 [==============================] - 0s 732us/step - loss: 0.0042 - accuracy:
1.0000
Epoch 100/130
29/29 [==============================] - 0s 659us/step - loss: 0.0040 - accuracy:
1.0000
Epoch 101/130
29/29 [==============================] - 0s 721us/step - loss: 0.0037 - accuracy:
1.0000
Epoch 102/130
29/29 [==============================] - 0s 781us/step - loss: 0.0040 - accuracy:
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 7/10
2020. 10. 5. 05_Sonar_Train_Test

1.0000
Epoch 103/130
29/29 [==============================] - 0s 652us/step - loss: 0.0043 - accuracy:
1.0000
Epoch 104/130
29/29 [==============================] - 0s 736us/step - loss: 0.0037 - accuracy:
1.0000
Epoch 105/130
29/29 [==============================] - 0s 710us/step - loss: 0.0042 - accuracy:
1.0000
Epoch 106/130
29/29 [==============================] - 0s 763us/step - loss: 0.0042 - accuracy:
1.0000
Epoch 107/130
29/29 [==============================] - 0s 834us/step - loss: 0.0031 - accuracy:
1.0000
Epoch 108/130
29/29 [==============================] - 0s 787us/step - loss: 0.0029 - accuracy:
1.0000
Epoch 109/130
29/29 [==============================] - 0s 809us/step - loss: 0.0034 - accuracy:
1.0000
Epoch 110/130
29/29 [==============================] - 0s 859us/step - loss: 0.0029 - accuracy:
1.0000
Epoch 111/130
29/29 [==============================] - 0s 929us/step - loss: 0.0028 - accuracy:
1.0000
Epoch 112/130
29/29 [==============================] - 0s 1ms/step - loss: 0.0025 - accuracy: 1.
0000
Epoch 113/130
29/29 [==============================] - 0s 825us/step - loss: 0.0023 - accuracy:
1.0000
Epoch 114/130
29/29 [==============================] - 0s 825us/step - loss: 0.0023 - accuracy:
1.0000
Epoch 115/130
29/29 [==============================] - 0s 791us/step - loss: 0.0025 - accuracy:
1.0000
Epoch 116/130
29/29 [==============================] - 0s 688us/step - loss: 0.0021 - accuracy:
1.0000
Epoch 117/130
29/29 [==============================] - 0s 826us/step - loss: 0.0024 - accuracy:
1.0000
Epoch 118/130
29/29 [==============================] - 0s 653us/step - loss: 0.0020 - accuracy:
1.0000
Epoch 119/130
29/29 [==============================] - 0s 722us/step - loss: 0.0021 - accuracy:
1.0000
Epoch 120/130
29/29 [==============================] - 0s 963us/step - loss: 0.0019 - accuracy:
1.0000
Epoch 121/130
29/29 [==============================] - 0s 858us/step - loss: 0.0021 - accuracy:
1.0000
Epoch 122/130
29/29 [==============================] - 0s 757us/step - loss: 0.0019 - accuracy:
1.0000
localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 8/10
2020. 10. 5. 05_Sonar_Train_Test

Epoch 123/130
29/29 [==============================] - 0s 791us/step - loss: 0.0019 - accuracy:
1.0000
Epoch 124/130
29/29 [==============================] - 0s 722us/step - loss: 0.0017 - accuracy:
1.0000
Epoch 125/130
29/29 [==============================] - 0s 757us/step - loss: 0.0021 - accuracy:
1.0000
Epoch 126/130
29/29 [==============================] - 0s 859us/step - loss: 0.0017 - accuracy:
1.0000
Epoch 127/130
29/29 [==============================] - 0s 791us/step - loss: 0.0015 - accuracy:
1.0000
Epoch 128/130
29/29 [==============================] - 0s 688us/step - loss: 0.0014 - accuracy:
1.0000
Epoch 129/130
29/29 [==============================] - 0s 825us/step - loss: 0.0014 - accuracy:
1.0000
Epoch 130/130
29/29 [==============================] - 0s 585us/step - loss: 0.0014 - accuracy:
1.0000
2/2 [==============================] - 0s 506us/step - loss: 0.1447 - accuracy: 0.
8571

Test Accuracy: 0.8571

13-3 학습이 계속되면 학습셋에서의 정확도는 계속 올라가지만, 테스트셋에서는 과적합이 발생

localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_S… 9/10


2020. 10. 5. 05_Sonar_Train_Test

In [4]:

from tensorflow import keras


model.summary()
keras.utils.plot_model(model, "myModel.png", show_shapes= True )
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_3 (Dense) (None, 24) 1464
_________________________________________________________________
dense_4 (Dense) (None, 10) 250
_________________________________________________________________
dense_5 (Dense) (None, 1) 11
=================================================================
Total params: 1,725
Trainable params: 1,725
Non-trainable params: 0
_________________________________________________________________

Out[4]:

In [ ]:

localhost:8890/nbconvert/html/Documents/모두의 딥러닝 2nd Edition/deeplearning/run_project (tensorflow 버젼 관련%2C 코드 약간 수정)/05_… 10/10

You might also like