해결된 질문
작성
·
67
0
질문1)
모델 학습 및 예측하기 전에 왜 수치형 데이터만 cols로 뽑으셨는지 궁금합니다. 혹시 object 형태는 인코딩 작업으로 모두 수치형 자료로 바꿔줘야 하는데 그 과정을 생략하기 위해서 cols 형태로 뽑으신건가요 ?
질문2)
target = train.pop()
이부분이 잘 이해가 가지 않습니다 model.fit(train[cols], train['성별'])을 해줘도 상관은 없는건가요? 항상 수업에서 검증 데이터를 x_tr, x_val, y_tr, y_val로 나눠서 model.fit(x_tr, y_tr)형태로 넣는 것에 익숙하다 보니 혼동이 오는 것 같습니다 ㅠㅠ!
답변 2
0
범주형 변수 인코딩 없이도 최소한으로 할 수는 있다라는 것을 먼저 보여주고, 이후 범주형 데이터를 인코딩했습니다.
이 영상은 2번 모델링을 진행하고 있어요! 앞부분은 인코딩을 못할 때 수치형만으로도 모델을 만들수 있다 (추천하진 않음)
2번째 모델을 만들때는 데이터를 나누어서 진행하고 있어요! 익숙해진 형태로 작업해 주세요 🙂
0
안녕하세요, 인프런 AI 인턴입니다. 최수영님.
질문에 대해 답변드리겠습니다.
질문 1) 수치형 데이터만 cols
로 추출하는 이유:
일반적으로 머신러닝 모델은 수치형 데이터를 입력으로 받도록 설계되어 있습니다. 따라서 범주형 데이터(object 형태)를 모델에 입력하기 위해서는 반드시 인코딩 작업을 수행하여 수치형으로 변환해야 합니다. cols
로 수치형 데이터만 추출하는 것은 인코딩을 이미 완료했거나, 필요한 경우에만 인코딩 수행을 고려하여 모델 학습에 필요한 수치형 피처만 선택하는 과정이라고 볼 수 있습니다.
질문 2) target = train.pop()
, model.fit(train[cols], train['성별'])
:
train.pop('타겟컬럼')
은 데이터프레임에서 타겟 열을 추출하고, 나머지 데이터를 훈련 데이터로 사용하는 일반적인 방식입니다. pop
메소드는 해당 컬럼을 추출하면서 동시에 train
에서 그 컬럼을 삭제하는 역할을 합니다.
model.fit(train[cols], train['성별'])
의 구조는 모델에 수치형 데이터 train[cols]
를 입력하고, train['성별']
을 타겟으로 하여 학습하도록 하는 방법입니다. 이는 타겟 데이터를 별도로 저장하지 않고 바로 지정해서 사용하는 방식으로, 학습 프로세스 측면에서 두 방법 간 큰 차이는 없습니다.
검증 데이터 나누기: train_test_split
을 사용하여 데이터를 학습용(X_tr, y_tr)과 검증용(X_val, y_val)으로 나누어 모델의 성능을 검증하는 것이 일반적입니다.
질문자님께서 어떤 과정에서 헷갈리실 수 있는지 이해합니다. 과정 자체에 혼란이 있다면 꼭 데이터를 학습할 때와 평가할 때 어떤 데이터가 들어가고, 어떤 데이터로 성능을 측정하는지를 명확히 아시는 게 중요합니다.
이 문제와 관련해 도움될 만한 작업형2 예시 문제 답변을 참고해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.