인프런 커뮤니티 질문&답변

강샛별님의 프로필 이미지
강샛별

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

데이터 분리

해결된 질문

작성

·

211

0

작업형2 에서 심장마비 확률 문제였는데요

여기서 데이터 전처리를 할때

X_train.drop('id' , axis =1)

X_test.pop('id)' 를 하고

데이터 분리할때 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('output', axis=1), train['output'], test_size=0.15, random_state=2022)

이렇게 하신다고 했는데 위에서는 id를 드롭하고 분리할대는 'output'을 drop 하는건가요? 그리고 test는 왜 분리 하지 않는지 궁금합니다

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

  1. 위에서는 id를 드롭하고 분리할 때는 'output'을 drop하는 건가요?

  • 네, 맞습니다. id는 대부분의 경우 모델링에 필요하지 않은 정보이므로 삭제됩니다. output은 타겟 변수로써, X(피처)와 y(타겟)를 분리할 때 사용됩니다.

  • 분리할 때가 아닌 미리 target을 변수에 담고, drop해도 됩니다.

    target = train['output']
    X_train = train.drop('output', axis=1)
    train_test_split(X_train, target)

    또는

target = train.pop('output')
train_test_split(X_train, target)

 

  1. 테스트 데이터는 왜 분리하지 않나요?

  • test데이터에는 target이 없습니다.


    추가적으로

  • id값이 숫자라면 train, test 모두 제거하지 않아도 됩니다. 모델이 자동으로 중요도를 낮게 책정합니다.

    • 문자라면 인코딩이 필요해 번거로워 삭제하는 것이 좋습니다.

    • 단 여기서 말하는 id는 데이터 수가 100개일 때 100개 모두 다른 데이터를 가정하겠습니다.

  • test의 id는 문제에 따라 최종 제출 때 사용할 때가 있었습니다. (csv파일 생성 시) 따라서 pop을 활용해 다른 변수에 저장을 해뒀습니다. pop는 드랍 + 변수에 대입하는 2가지 기능이 있습니다.

     

강샛별님의 프로필 이미지
강샛별
질문자

target = train['output']

X_train = train.drop('output', axis=1) train_test_split(X_train, target)

만약에 이렇게 하면 ,,,X_train.drop('id' , axis =1)이거 대신에 위에 처럼 하는건가요?

id대신에 output를 drop,,,,인건가요??

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

I대신이란 표현은 어떤걸 묻는지 모르겠어요

Output을 드랍한건 맞아요🤗

강샛별님의 프로필 이미지
강샛별

작성한 질문수

질문하기