연습 - 데이터 세트를 학습 및 테스트 집합으로 분할

완료됨

다음 단계는 데이터를 학습 데이터와 테스트 데이터로 분할하는 것입니다. 기계 학습 분류자에 모든 데이터를 제공하는 방식은 보유한 데이터를 알려주는 효과만 있습니다. 즉, 정확한 예측은 생성하지 않습니다.

데이터를 분할해야 하는 이유는 무엇일까요?

데이터 분할의 중요도를 설명하는 한 가지 방법은 정식 수업에서 수행할 수 있는 시험과 비교하는 것입니다. 수업 전체에서 예제 문제를 표시되고 답변이 제공됩니다. 이 시나리오는 강의, 과제 및 연습 시험에서 발생합니다.

수업에서 강사가 시험 전날에 정확한 시험 및 정답을 제공했다고 가정해 보겠습니다. 이 테스트를 정말 잘 치뤘나요? 예

개념을 배웠는지 여부를 알고 계신가요? 아니요. 시험에서 테스트하려는 개념보다는 테스트에 제공된 질문에 대한 대답을 익혔을 확률이 더 높습니다.

실제로 배우고 싶다면 답변을 알고 있는 문제로 연습을 진행하는 것이 좋습니다. 이러한 문제에 대해 확신하는 경우 대답을 아직 모르는 문제로 시도해 보세요. 기본적으로 기계 학습 분류자가 “학습”하는 방법입니다.

데이터 분할

데이터를 4개의 새 변수로 분할하려고 합니다. 입력 및 출력을 나타내는 Xy가 이미 있습니다. 이제 이러한 데이터를 학습 및 테스트 데이터로 분할하려고 합니다.

scikit-learn 및 분류자의 분할 함수를 사용하여 순서대로 일치되는 Xy의 무작위 샘플링을 진행할 수 있습니다. 데이터를 임의로 분할하지 않고 대신 학습 데이터용으로 행의 처음 80%를 사용하고 나머지는 테스트용으로 남겨 둔 경우 문제가 발생합니다.

예를 들어 데이터가 날짜순으로 정렬되어 있다고 가정해 보겠습니다. 처음 240개 행을 학습용으로 가져오면 1999년 이전 데이터를 모델에 학습시키게 됩니다. 시간이 지남에 따라 센서가 변경될 수 있기 때문에 이 시나리오는 문제가 됩니다. 이전 데이터를 보는 것만으로는 새 기술로 수행하게 되는 의사 결정에 적합한 지표가 되지 않을 수 있습니다.

Visual Studio Code의 셀에 이 코드를 붙여넣어 데이터를 분할합니다.

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2, random_state=99)

이 코드는 X_train, X_test, y_trainy_test의 네 가지 그룹으로 데이터를 무작위로 분리합니다. scikit-learn의 train_test_split 함수를 사용하여 다음과 같은 네 가지 중요한 매개 변수를 지정합니다.

  • 입력 데이터: X - 발사를 예측하는 데 사용하려는 모든 열입니다.
  • 출력 데이터: y - 각 행의 결과입니다(로켓이 발사되었는지 여부는 관계없음).
  • 테스트 크기: 0.2 - 데이터의 80%를 학습하고 20%를 테스트하는 것은 데이터 과학에서 사용되는 일반적인 분할 방식입니다.
  • 무작위 상태: 99 - 데이터 선택의 임의성을 변경하는 무작위 초기값입니다.

다시 돌아와서 테스트 크기와 무작위 상태를 수정한 후 다른 옵션도 시도해 볼 수 있습니다.