테스트 전용 데이터 세트에서 훈련 전용 데이터 세트 분리
머신 러닝 모델을 구축할 때 가장 중요한 방법 중 하나는 데이터를 훈련 데이터 세트와 테스트 데이터 세트로 분리하는 것입니다. 이를 통해 우리는 하나의 데이터 세트에서 모델을 훈련하고 지금은 본 적이 없는 다른 데이터 세트에서 성능을 추정할 수 있습니다. 그래도 데이터를 훈련 전용 데이터 세트와 테스트 전용 데이터 세트로 분리하고 싶을 때가 있습니다.. 이 게시물에서는 이것이 필요한 이유와 수행 방법을 살펴보겠습니다.
데이터를 훈련 전용 데이터 세트와 테스트 전용 데이터 세트로 구분하는 이유는 무엇일까요?
데이터를 교육 및 테스트 데이터 세트로 분리하는 것은 머신 러닝에서 일반적인 관행입니다. 학습 데이터 세트는 모델을 학습하는 데 사용되고 테스트 데이터 세트는 성능을 추정하는 데 사용됩니다. 그래도 교육 데이터 세트에서 사용할 수 있는 것보다 더 큰 데이터 세트에서 모델을 교육하려는 상황이 있을 수 있습니다. 유사한 경우 테스트 데이터를 제외한 사용 가능한 데이터를 포함하는 학습 전용 데이터 세트를 생성할 수 있습니다.
테스트 전용 데이터 세트를 생성하는 또 다른 이유는 지금까지 본 적이 없는 완전히 별개의 데이터 세트에서 모델의 성능을 추정하려는 경우입니다. 이것은 실제 환경에 모델의 성능을 검증하는 데 유용할 수 있습니다.
데이터를 훈련 전용 데이터 세트와 테스트 전용 데이터 세트로 분리하는 방법
데이터를 훈련 전용 및 테스트 전용 데이터 세트로 분리하기 위해 Python에서 scikit-learn 라이브러리를 사용할 수 있습니다. 그런 다음 수행 방법에 대한 예입니다.
import pandas as pd
from sklearn.model_selection import train_test_split
# pandas 데이터 프레임에 데이터 로드하기
data = pd.read_csv('data.csv')
# 테스트 데이터와 나머지 데이터를 분리합니다.
test_data = data.sample(frac=0.2, random_state=42)
# 남은 데이터를 train 으로 사용
train_data = data.drop(test_data.index)
# 학습 데이터를 입력 변수와 출력 변수로 분할합니다.
X_train = train_data.drop('output_variable', axis=1)
y_trian = train_data['output_variable']
# 테스트 데이터를 입력 및 출력 변수로 분할합니다.
X_test = test_data.drop('output_variable', axis=1)
y_test = test_data['output_variable']
이 예에서는 먼저 데이터를 pandas 데이터 프레임에 로드합니다. 또한 'sample' 시스템을 사용하여 데이터 중 데이터의 20%를 테스트 데이터 세트로 선택하고 나머지 데이터는 훈련 데이터 세트로 사용합니다. 결국 교육 및 테스트 데이터 세트를 모두 입력 및 출력 변수로 해결합니다.
코드를 실행할 때마다 데이터가 동일한 방식으로 분할되도록 random_state 매개변수를 설정했습니다. 이것은 재현성을 위해 중요합니다.
데이터를 교육 및 테스트 데이터 세트로 분리하는 것은 머신 러닝 모델을 구축하는 데 필수적인 단계입니다. 그래도 학습 전용 데이터 세트 또는 테스트 전용 데이터 세트를 생성해야 하는 경우가 있을 수 있습니다. 이 게시물에서는 이것이 필요한 이유를 살펴보고 Python의 scikit-learn 라이브러리를 사용하여 이를 수행하는 방법에 대한 예를 전달했습니다. 데이터를 훈련 전용 데이터 세트와 테스트 전용 데이터 세트로 분리함으로써 강력하고 신뢰할 수 있는 머신 러닝 모델을 만들 수 있습니다.