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

breakdata00님의 프로필 이미지
breakdata00

작성한 질문수

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

3회 기출유형(작업형2)

3회 기출유형(작업형2) 수업 관련 질문

해결된 질문

작성

·

248

·

수정됨

2

선생님 안녕하세요 ~ 항상 강의 잘 듣고있습니다!

공부를 하다 궁금한 점이 생겨 작업형2 3회 기출문제 관련 질문드립니다.

1. 다른 피처엔지니어링은 따로 for문을 사용하지 않아도 여러 컬럼에 대해 스케일링이 적용되던데 왜 Label Encoding만 for문을 사용하는지 궁금합니다.

2. unamed:0은 삭제해도 되고, 삭제하지 않아도 되는걸까요?

3. 복습을 하며 아래와 같이 풀었는데 이렇게 해도 되는걸까요?

제출할 때 선생님께서 사용하신 'index':test.index 대신 기존에 있던 Unnamed: 0을 인덱스처럼 사용하였습니다.

#데이터 전처리

train = train.drop('Unnamed: 0',axis=1) 
index = test.pop('Unnamed: 0')

#제출

submit = pd.DataFrame({'index':index, 'pred':pred[:,1]})
submit.to_csv('2014.csv', index = False)

 

4. 그리고 pred의 범위 설정할 때, pred 변수를 만들 때 하는게 좋은지 제출할 때 하는게 좋은지 궁금합니다. (pred[:,1]이런식으로 범위 설정)

#pred 변수 설정시

pred = model.predict_proba(test)[:,1]

#제출시

submit = pd.DataFrame({'index':index, 'pred':pred[:,1]})

5. 수치형 /범주형 데이터 분리 없이 원핫인코딩하는 코드를 알고싶습니다.

cols = 범주형 데이터

train[cols] = pd.get_dummies(train[cols])

>> 이렇게 했을 때는 길이가 안 맞아서 오류가 났고

train = pd.get_dummies(train[cols])

>> 이렇게 했을 때는 train에 원핫인코딩된 범주형 데이터만 저장이 됐습니다.

 

감사합니다.

답변 1

0

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

  1. 사이킷런에서 한 개의 컬럼씩 적용하도록 만들어져있어서 입니다 :)
    반복문을 활용하지 않더라도 apply 등 다른 방법이 필요해요

  2. 삭제 하지 않아도 머신러닝에서 중요도를 낮게 생각하고 모델에 큰영향을 미치진 않을거에요

  3. 네, 가능합니다. 그런데 6회 응시가이드에서는 예측값만 제출하라고 나와 있어요
    image따라서 예측값만 컬럼명은 pred로 해서 result.csv로 만들면 됩니다.

  4. 상관 없습니다 :)

  5. train[cols] = pd.get_dummies(train[cols]) 이렇게 적용할 수는 없습니다. 원핫인코딩은 컬럼 수가 달라지기 때문에 맞지 않아요 에러가 발생합니다.
    특정 컬럼만 하고자 할때는
    1. 데이터프레임을 나누는 방법
    2. df_dummies = pd.get_dummies(df, columns=cols) 이렇게 선택하는 방법이 있어요
    그렇지만 무엇보다다
    편하게 사용하고 싶다면 train = pd.get_dummies(train) 만 사용해도 자동으로 범주형(오브젝트) 값만 인코딩 해서 저장됩니다.

breakdata00님의 프로필 이미지
breakdata00
질문자

빠르고 친절한 답변 감사합니다 ^_^

breakdata00님의 프로필 이미지
breakdata00

작성한 질문수

질문하기