실습 | 초음파 광물 예측하기: k겹 교차 검증
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from sklearn.model_selection import KFold from sklearn.metrics import accuracy_score import pandas as pd # 깃허브에 준비된 데이터를 가져옵니다. !git clone https://github.com/taehojo/data.git # 광물 데이터를 불러옵니다. = pd.read_csv('./data/sonar3.csv', = ) # 음파 관련 속성을 X로, 광물의 종류를 y로 저장합니다. X = .iloc[:,0:60] = .iloc[:,60] # 몇 겹으로 나눌 것인지 정합니다. = 5 # KFold 함수를 불러옵니다. 분할하기 전에 샘플이 치우치지 않도록 섞어 줍니다. = KFold( = , = ) # 정확도가 채워질 빈 리스트를 준비합니다. = [] model_fn(): = Sequential() # 딥러닝 모델의 구조를 시작합니다. .add(Dense(24, =60, ='relu')) .add(Dense(10, ='relu')) .add(Dense(1, ='sigmoid')) return # k겹 교차 검증을 이용해 k번의 학습을 실행합니다. # for 문에 의해 k번 반복합니다. # split()에 의해 k개의 학습셋, 테스트셋으로 분리됩니다. for , in .split(X): , = X.iloc[ ,:], X.iloc[ ,:] , = .iloc[ ], .iloc[ ] = model_fn() .compile( ='binary_crossentropy', ='adam', =['accuracy']) = .fit( , , =200, =10, =0) = .evaluate( , )[1] # 정확도를 구합니다. .append( ) # 정확도 리스트에 저장합니다. # k번 실시된 정확도의 평균을 구합니다. = sum( ) / # 결과를 출력합니다. print('정확도: ', ) print('정확도 평균: ', )