일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 플러터공부
- 알고리즘
- ReactNative
- 웹해킹
- 플러터앱개발
- 앱개발공부
- 플러터
- react
- 명령형프로그래밍
- Flutter
- 플러터앱개발공부
- 면접을위한CS전공지식노트
- 딥러닝
- 데이터베이스의기본
- 정보보호
- 화면이동
- Flutter공부
- BottomTabBarNavigator
- 날짜포맷팅
- Object~
- OpenWeatherApi
- 모두의딥러닝
- 하단탭바알림
- date-fns
- 선언형프로그래밍
- Navigation
- 앱개발
- RectQuery
- tabBarBadge
- BottomTabNavigation
Archives
- Today
- Total
기록하기
[모두의 딥러닝] K겹 교차 검증 본문
K겹교차 검증이 무엇일까요?
데이터셋을 여러 개로 나누어 하나씩 테스트셋으로 사용하고 나머지를 모두 합해서 학습셋으로 사용하는 방법입니다. 이렇게 하면 가지고 있는 데이터의 100%를 학습셋으로 사용할 수 있고, 또 동시에 테스트셋으로도 사용할 수 있습니다.
K겹교차 검증은 어떻게 사용할 수 있나요?
데이터넷을 다섯 개로 나눈 후 그중 네 개를 학습셋으로, 나머지 하나를 테스트셋으로 만들어서 다섯 번의 학습을 순차적으로 실시하는 것이 5겹 교차 검증입니다. 이제 초음파 광물 예측 예제를 통해 5겹 검증을 실시해 보겠습니다. 데이터를 원하는 수만큼 나누어 각각 학습셋과 테스트셋으로 사용되게 하는 함수는 사이킷런 라이브러리의 KFold() 함수입니다. 실습 코드에서 KFold()를 활용하는 부분만 뽑아 보면 다음과 같습니다.
k = 5
kfold = KFold(n_splits=k, shoffle=True)
acc_score = []
for train_index, test_index in kfold.split(X):
X_train, X_test = X.iloc[train_index,:], X.iloc[test_index,:]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]
K겹교차 검증으로 코드 업그레이드하기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GroupKFold
import pandas as pd
!git clone https://github.com/taehojo/data.git
df = pd.read_csv('./data/sonar3.csv', header=None)
X = df.iloc[:,0:60]
y = df.iloc[:,60]
k = 5
kfold = KFold(n_splits=k, shoffle=True)
acc_score = []
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=True)
def model_fn() :
model = Sequential()
model.add(Dense(24, input_dim = 60, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
return model
for train_index, test_index in kfold.split(X) :
X_train, X_test = X.iloc[train_index,:], X.iloc[test_index,:]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]
model = model_fn()
model.comile(loss = 'binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=200, batch_size=10, verbose=0)
accuracy = model.evaluate(X_test, y_test)[1]
acc_score.append(accuracy)
avg_acc_score = sum(acc_score) / k
print('정확도: ', acc_score)
print('정확도 평균: ', avg_acc_score)
'AI 수업' 카테고리의 다른 글
아나콘다3, 아나콘다 가상환경, 가상환경 세팅법, 주피터 노트북 가상환경 커널 연결법, 주피터 노트북 사용법 (0) | 2023.08.21 |
---|---|
[모두의 딥러닝] 과적합에 대해 알아보자! (0) | 2023.05.08 |
[모두의 딥러닝] Train Set, Test Set, 모델 성능 검사하기 (0) | 2023.04.24 |
[모두의 딥러닝] 다중 분류 문제 해결하기 (0) | 2023.04.17 |
[모두의 딥러닝] 피마 인디언의 당뇨병 예측 실행 (0) | 2023.04.10 |