• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

kfold 질문

21.03.28 10:49 작성 조회수 273

0

강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)

질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. 
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!

구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.

기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. 

• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. 
반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 

kfold 교차검증 수행에 관한 질문을 드립니다. 타이타닉 예제 강의 코드중 일부입니다

  # KFold 교차 검증 수행
  for iter_count, (train_index, test_index) \
          in enumerate(kfold.split(X_titanic_df)):
이부분이 잘 이해가 되지 않습니다
괄호부분 (train_index, test_index) 에 어떻게 데이터가 분배되서 들어가는지 잘 모르겠습니다달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요.
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!
구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.
기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다.
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요.
• 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
kfold 교차검증 수행에 관한 질문을 드립니다. 타이타닉 예제 강의 코드중 일부입니다
# KFold 교차 검증 수행
for iter_count, (train_index, test_index) \
in enumerate(kfold.split(X_titanic_df)):
이부분이 잘 이해가 되지 않습니다
괄호부분 (train_index, test_index) 에 어떻게 데이터가 분배되서 들어가는지 잘 모르겠습니다

답변 1

답변을 작성해보세요.

0

안녕하십니까,

만약 X_titanic_df 100개 이고 K Fold를 5개로 설정을 했다고 가정해 보겠습니다.

그리고 아래와 같은 코드가 수행 된다면,
for train_index, test_index in kfold.split(X_titanic_df)):
                .....

해당 for 문은 5번 loop 를 수행하면서  X_titanic_df를 접근할 수 있는 index값을 각각 train_index와  test_index 로 할당합니다. 그리고 loop를 돌때마다 train_index와 test_index값이 교차되어 할당됩니다.

가령 첫번째 loop 시에는 index 0 부터 79번 까지가 train_index에, 80번 부터 99번 까지가 test_index로 할당 될 수 있습니다. 그래서 80개의 학습 데이터와 20개의 테스트 데이트를 X_titaic_df에 train_index, test_index로 접근하여 만들 수 있습니다.


다음 loop 시에서 index 0 부터 59번까지, 그리고 80번 부터 99번 까지의 80개 인덱스를 train_index로 할당 할 수 있습니다. 그리고 60번 부터 79번 까지의 20개 인덱스를 test_index로 할당 할 수 있습니다. 마찬가지로 80개의 학습데이터와 20개의 테스트 데이터를 만들지만 이전 loop와는 다른 데이터 세트로 구성 되어 있습니다.


이런 식으로 최종 5번을 loop를 돌면서 서로 다른 80개의 학습 데이터와 20개의 테스트 데이터를 생성할 수 있게 아래 for 문이 구성되어 있습니다.
for train_index, test_index in kfold.split(X_titanic_df)):


그리고 아래와 같이 enumerate로 감싼 형식은 몇번째 loop 수행이 되는지를 iter_count로 반환하는 기능이 추가됩니다.

for iter_count, (train_index, test_index) in enumerate(kfold.split(X_titanic_df))

감사합니다.