• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

다중분류 데이터가 숫자가 아닐경우

22.10.18 20:19 작성 조회수 131

0

- 아래와 같이 출력되어야 할 y값 (종속변수) 이 숫자가 아닌 문자인 경우에도 실전 압축 코드처럼 똑같이 풀면되는건가요??

RandomForestClassifier 분류로 했을경우에는 문제가 없지만

RandomForestRegressor 회귀로 돌렸을경우에는 문제가 발생되서 궁금해서 질문드립니다.

 

답변 1

답변을 작성해보세요.

0

DQ K님의 프로필

DQ K

지식공유자

2022.10.18

안녕하세요, mouse님!

질문해주신 사항처럼 종속값이 숫자가 아닌 명목형 변수와 같은 형태라면
회귀 모델이 정상적으로 작동하지 않습니다.

때문에 이러한 경우에는 분류 모델을 사용하거나,
해당 명목형 변수에 대응하는 숫자값으로 바꿔준 뒤 예측한 값을
가장 가까운 명목형 변수와 매칭시키는 과정이 필요하게 됩니다.

이와 관련해 명목형 변수를 숫자형 변수로 바꿔준 뒤,
회귀로 예측하고, 이를 다시 맵핑시키는 코드를 공유드릴까 했지만
애초에 질문해주신 방식은 회귀적으로 풀기에 적합하지 않으며
시험 합격 목적으로나 다른 공모전을 목적으로 해도 사용하지 않을 단순 기술적인 부분이기에
넘어가도록 하겠습니다.

다만 만약 맵핑시키는 과정이 궁금하시다면 본 강의의 map과 lambda를 이용한 맵핑을 참고하시거나 추가 질문주시면 따로 공유드리도록 하겠습니다.

감사합니다.

mouse님의 프로필

mouse

질문자

2022.10.18

명목형변수->숫자형변수->예측-> 맵핑 인데 맵핑시키는 부분을 어떻게 해야하는지 감이 안와서 추가 질문드립니다.

명목형 변수를 숫자형 변수로 바꾸는건 pd.get_dummies 를 사용해서

image이렇게 변환후에 RandomForestRegressor 으로 학습한 결과 값입니다.image

여기서 한개로 어떻게 합쳐야하는지 궁금합니다.

 

 

-그리고 추가로 질문이 있는데 이것처럼 결과 y값이 성능 체크할때에도( from sklearn.metrics import f1_score,roc_auc_score)

숫자가 아닌 문자값이면 성능을 체크할수가 없나요?

trainX, testX, trainy, testy = train_test_split(train_x_total, y, stratify=y, random_state=2022)

이렇게 임으로 값만들어서 testy 이값과 분류한 결과값 비교했는데 오류가 나서요ㅜㅜ

(이번 4차시험에서 이처럼 y(결과값)이 숫자가 아닌 문자값이여서 확인해 보고 싶습니다)

DQ K님의 프로필

DQ K

지식공유자

2022.10.18

  1. 숫자형 변수를 명목형 변수로 바꾸도록 맵핑
    (실전압축코드 페이지에 제시된 데이터 사용 - 0 : male, 1 : female로 임의 분류할 경우 가정)

    y_train = y_train.map(lambda x : 'male' if x == 0 else 'female')
    y_train
  2. 성능 확인뿐 아니라 기본적으로 모든 컴퓨팅 연산은 모든 데이터를 숫자형으로 두는 것을 가정합니다. 만약 숫자형이 아닌데도 잘 실행이 된다면, 이를 중간에 다른 라이브러리나 메서드를 통해 대체되어 작동하고 있다는 의미입니다.

 

  1. 4차 시험에서 어떤 부분이 잘 안풀리는 것인지 전체 문제나 헷갈리는 부분을 구체적으로 말씀해주시면 알려드리도록 하겠습니다.