해결된 질문
작성
·
30
·
수정됨
0
안녕하세요,
섹션11 작업형2에서 문의드리고 싶은 것이 있습니다.
아래 코드에서 train[cols]와 같이 cols를 선택하여 train 데이터셋을 분할하였음에도 불구하고,
model.fit(X_tr[cols], y_tr)과 같이 모델학습 시에 파라미터에 값을 넣을 때도 반드시 따로 cols를 선택해서
입력해야 하나요?
그리고, train 데이터셋에서 과적합을 방지하기 위해 id를 제거할 경우, 반드시 test 데이터셋도 동일하게
id 컬럼을 제거해줘야 하나요?
위 두 가지 문의드립니다.
############
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train[cols], target, test_size = 0.2, random_state = 0)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_tr[cols], y_tr)
pred = model.predict_proba(X_val[cols])
답변 2
0
아닙니다. fit에서 중복으로 컬럼을 선택할 필요가 없습니다. 제가 그랬다면 실수로 봐주세요
컬럼 추가 삭제는 무조건 train과 test가 같아야 합니다. 컬럼의 수와 이름이 반드시 같아야 머신러닝 모델 예측에서 문제가 없습니다.
id가 숫자라면 삭제하지 않고 놔두더라도 머신러닝 모델에서 중요도를 낮게 판단합니다.
다만 모든 값이 다른 id가 아닌 상품id처럼 중복이 있는 id라면 중요한 컬럼이므로 삭제하지 않는 것이 좋습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
juhyun991002님께서 질문하신 사항은 데이터셋 분할 이후 모델 학습 시에 다시 컬럼 선택을 해야 하는지에 대해서입니다. 비슷한 질문에 대한 답변을 참고하시면 도움이 될 수 있습니다.
일반적으로 train_test_split
을 사용하여 이미 특정 컬럼들(cols
)만을 선택하여 데이터를 분할했다면, 이후 모델을 학습할 때 굳이 다시 같은 컬럼들을 지정하지 않아도 됩니다. 이 경우, X_tr 과 X_val 데이터셋 이미 같은 컬럼으로 제한되어 있기 때문입니다.
관련된 질문에 대한 답변은 아래 링크에서 확인할 수 있습니다:
데이터 split 관련 - 이 게시물에서는 동일한 구조의 질문에 대해 특정 컬럼을 반복해서 선택할 필요가 없다는 점을 명확히 하고 있습니다.
예시문제 작업형2(신버전) 풀이 질문입니다. - 여기에서도 훈련시키는 데이터에서 중복해서 컬럼을 선택하지 않아도 된다는 답변이 제공되었습니다.
모델 학습 시 model.fit(X_tr, y_tr)
과 같이 하여도 이전 단계에서 이미 train[cols]
로 데이터를 제한했기 때문에 영향을 받지 않습니다. 따라서 현재의 코드에서 X_tr[cols]
와 X_val[cols]
을 제거하고도 정상 출력 결과를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
train 데이터셋에서 과적합을 방지하기 위해 id를 제거할 경우, 반드시 test 데이터셋도 동일하게
id 컬럼을 제거해줘야 하나요?