inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

ㅎㅇ

해결된 질문

180

빅분기수강생

작성한 질문수 22

0

저번에 질문한 거 코드 수정 및 정리했습니다. 선생님

 

※ 피쳐엔지니어링에서 train, test 셋을 분리( .copy() )해서 수치형은 스케일링하고 범주형은 인코딩 한 다음, 합치기 ( .concat() ) 하는 방식이 아니라

수치형 부분 칼럼을 변수(cols_n)로 받고, 범주형 부분을 변수(cols_c) 으로 받아서, 데이터셋을 수치와 범주형으로 분리하지 않은 상태에서 각각 스케일링, 인코딩을 적용하고 검증데이터셋 분리-> 모델 & 평가지표 불러오기 -> 예측(테스트셋 적용) -> df 생성 -> 제출 하는 방법에서

 

아래에 피쳐 엔지니어링 부분 코드 정리한거 확인 부탁드립니다.

 

 

경우 1. [train, test // 2개 데이터셋 제공시]

# train셋엔 있고 test셋엔 없는 "target"에 해당하는 칼럼 분리
# "target" 데이터는 범주형이든 수치형이든 스케일링이나 인코딩을 하면 안되므로 제외시킴

target = train.pop(["target"])
cols_n = train.select_dtypes(exclude="O").columns
cols_c = train.select_dtypes(include="O").columns
## 수치형 민맥스 스케일링 작업
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
           
train[cols_n] = scaler.fit_transform(train[cols_n])
test[cols_n] = scaler.transform(test[cols_n])

 

## 범주형 라벨 인코딩 작업
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for col in cols_c:
    le = LabelEncoder()
    train[col] = le.fit_transform(train[col])
    test[col] = le.transform(test[col])


## or 범주형 원핫 인코딩 작업 시 

# .get_dummies() 원핫 인코딩은 자동으로 범주형만 찾아서 인코딩 함
# 방법 1
train = pd.get_dummies(train)   
test = pd.get_dummies(test)

## 라벨 인코딩과 통일성을 원한다면 (방법 2)
train = pd.get_dummies(train[cols_c])   
test = pd.get_dummies(test[col_c])
# 다만 어차피 자동으로 찾아주니 이렇게 하지 말고 간편한 위의 방법 1 방식으로 하자

그 다음 검증데이터셋 분리 등 과정 이후 ~~~~~~~~~~~ 제출

 

 

 

경우 2. [X_train, y_train, X_test // 3개 데이터셋 제공시]

cols_n = X_train.select_dtypes(exclude="O").columns
cols_c = X_train.select_dtypes(include="O").columns
## 수치형(스케일링) 작업

##민맥스 스케일링
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
          
X_train[cols_n] = scaler.fit_transform(train[cols_n])
X_test[cols_n] = scaler.transform(test[cols_n])
## 범주형(인코딩) 작업

## 라벨 인코딩
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for col in cols_c:
    le = LabelEncoder()
    X_train[col] = le.fit_transform(X_train[col])     
    X_test[col] = le.transform(X_test[col])


## or 원핫 인코딩 시 
# .get_dummies() 원핫 인코딩은 자동으로 범주형만 찾아서 인코딩 함
# 방법 1
X_train = pd.get_dummies(X_train)   
X_test = pd.get_dummies(X_test)

## 라벨 인코딩과 통일성을 원한다면 (방법 2)
X_train = pd.get_dummies(X_train[cols_c])   
X_test = pd.get_dummies(X_test[col_c])
# 다만 어차피 자동으로 찾아주니 이렇게 하지 말고 간편한 위의 방법 1 방식으로 하자

이후 검증데이터셋 분리 등 과정 이후 ~~~~~~~~~~~ 제출

 

이번 코딩엔 틀린게 없어야 할텐데.....

이거 제대로 한거 맞는지 확인 부탁드립니다. 선생님

여러 차례의 질문에 답변 해주셔서 감사합니다

 

 

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 1

0

퇴근후딴짓

train = pd.get_dummies(train[cols_c]) 
test = pd.get_dummies(test[col_c])

이 코드 그대로 사용할 건 아니죠? 범주형만 저장됩니다.

 

그리고 만약 행의 수만큼 유니크한 ID가 있다면 ??

ID가 숫자라면 함께 스케일링 되지 않도록 제거 (스케일링 생략하면 상관없음)

ID가 문자라면 함께 인코딩 되지 않도록 제거

 

0

빅분기수강생

죄송한데요.... 그럼 제가 적은 원핫인코딩 방법 2 부분은 그냥 삭제하고 방법 1로만 하면 문제 없이 되는거 맞죠....??? 계속 질문이 생기게 되네요...

0

퇴근후딴짓

X_train = pd.get_dummies(X_train)

X_test = pd.get_dummies(X_test)

는 문제없습니다.

질문 드립니다.

0

37

2

강의 내용 관련 질문드립니다~

0

34

2

수강 연장 문의

0

31

1

강의자료 일괄 다운로드

0

41

2

수강기간 연장 문의드립니다

0

27

1

list 문제 질문드립니다~

0

28

2

빅분기 실기 12회 재도전

0

39

1

강의 기간 연장 가능여부 검토 요청건

0

30

1

수강기간 연장 문의 드립니다

0

36

2

수강기간 연장 문의드립니다

0

46

2

질문이요

0

51

2

수강기간 연장 문의드립니다.

0

48

2

문제 3-2 질문드립니다

0

43

2

수강기간 연장 문의 드립니다.

0

57

2

변수, 칼럼 , df 구분

0

47

2

수강기간 연장 문의드립니다.

0

49

2

수강기간 연장 문의

0

46

2

수강기간 연장 문의드립니다.

0

40

2

수강기한 연장 문의

0

75

2

수강기간 연장 문의드립니다

0

57

2

결정트리에서 적절한 깊이 선택 후 시각화 과정에서 학습 데이터만 사용하는 이유

0

44

2

수강기간 연장 문의드립니다.

0

70

2

수강연장 문의

0

76

2

수강연장문의

0

53

2