●train_test_split()
머신러닝에서 데이터를 훈련 데이터와 테스트 데이터로 나누는 데 사용되는 함수입니다. 이를 통해 모델을 훈련할 때 훈련 데이터를 사용하고, 모델을 평가할 때는 테스트 데이터를 사용하여 과적합을 방지하고 모델의 일반화 능력을 평가할 수 있습니다.
train_test_split 함수는 데이터를 랜덤하게 나누어 주는데, 이는 데이터가 특정 순서나 패턴에 의해 나누어지지 않도록 보장하여 모델의 평가 결과가 더 신뢰할 수 있게 만듭니다.
ex)
train_test_split(X, y, test_size=0.25, train_size=None, random_state=None, shuffle=True, stratify=None)
X: 독립 변수들 (특성들, 입력 데이터).
y: 종속 변수 (목표 값, 레이블).
test_size: 테스트 데이터셋의 비율 또는 크기입니다. 예를 들어, test_size=0.25로 설정하면 전체 데이터의 25%를 테스트 데이터로 사용하고, 나머지 75%는 훈련 데이터로 사용됩니다.
train_size: 훈련 데이터셋의 비율이나 크기입니다. test_size와 동시에 사용할 수 없습니다.
random_state: 난수 발생 시드를 지정하는 값으로, 동일한 데이터셋에 대해 같은 훈련/테스트 분할을 얻기 위해 사용됩니다. 이 값을 고정시키면 분할이 재현 가능해집니다.
shuffle: 데이터를 섞을지 여부를 지정합니다. 기본값은 True이며, 데이터가 섞이지 않으면 순차적으로 나누어지게 됩니다.
stratify: 분할할 때 각 클래스의 비율을 유지하도록 도와줍니다. 예를 들어, 데이터가 클래스 불균형일 때, 이 인자를 y로 설정하면 각 클래스의 비율이 훈련 세트와 테스트 세트에 고르게 분포됩니다.
●훈련 데이터(Training Data)
모델을 학습하는 데 사용되는 데이터입니다. 모델이 이 데이터를 통해 패턴을 학습합니다.
●테스트 데이터(Test Data)
모델을 평가하는 데 사용되는 데이터입니다. 이 데이터는 모델이 학습하지 않은 데이터여야 하며, 모델의 성능을 평가하는 데 필요합니다.
●stratify
stratify는 클래스가 불균형인 경우 유용합니다. 예를 들어, 이진 분류 문제에서 각 클래스가 동일한 비율로 훈련 세트와 테스트 세트에 배분되도록 도와줍니다.
예를들면 정답데이터가 0 or 1인데, stratify를 설정하지 않으면 훈련데이터에 모두 0, 테스트 데이터에 모구 1이 들어갈 가능성이 있습니다. 이를 방지하고 동일한 비율로 훈련세트와 테스트 세트를 배분하도록 해줍니다.
from sklearn.model_selection import train_test_split
# 클래스 불균형 데이터 예시
X = [[1], [2], [3], [4], [5], [6]]
y = [0, 0, 1, 1, 1, 0]
# stratify=y로 설정하여 클래스 비율을 균등하게 유지하며 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)
print("훈련 데이터 레이블 분포:", y_train)
print("테스트 데이터 레이블 분포:", y_test)
'프로그래밍 > AI 머신러닝,LLM' 카테고리의 다른 글
파이썬 머신러닝 사이킷런에서 reshape() 사용이유 (0) | 2025.04.02 |
---|---|
머신러닝 회귀(regression) 개념 (0) | 2025.03.29 |
머신러닝 기초, 모델, 데이터셋, 사이킷런 (1) | 2025.03.25 |
주피터 노트북 개념, 사용이유 (0) | 2025.03.23 |
파이썬 가상환경 사용이유, 사용법 (0) | 2025.03.18 |
댓글