inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

작업2유형 피처엔지니어링 문의

해결된 질문

316

Jason

작성한 질문수 10

0

안녕하세요, 선생님

매번 감사합니다.

 

다름 아니라 오픈된 다른 유형의 문제를 풀이해보고 있는데요.

 

아래 해당 train/test 데이터셋의 경우 원핫인코딩 이후 랜덤포레스트 모델링 예측시 에러가 발생하길래 확인해보니,

train의 object형 데이터의 unique한 갯수(gender 컬럼의 값이 3개)와

test의 object형 데이터의 unique한 갯수(gender 컬럼의 값이 2개)가 다르더라고요

 

이럴경우 train과 test를 합쳐서(Concat)

피처 엔지니어링해야된다고 배운 거 같은데 각각 train/test 피처 엔지니어링하고,

train_test_split 과정에서 train할 데이터를 선택할 때 unique 갯수 차이로 1개더 생성된 'gender_Other'라는 컬럼을 drop시키고 데이터 분리, 모델링 진행해도 평가받을때 문제없을까요?

train.drop(['stroke', 'gender_Other']

 

 

ㅇ 전체 코

import pandas as pd
train= pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/stroke_/train.csv')
test= pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/stroke_/test.csv')

test_id = test.pop('id')
train = train.drop('id', axis=1)

train['age'] = train['age'].str.replace('\*', '').astype('int')

train = pd.get_dummies(train)
test = pd.get_dummies(test)

train['bmi'] = train['bmi'].fillna(train['bmi'].median())
test['bmi'] = test['bmi'].fillna(test['bmi'].median())


from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(train.drop(['stroke', 'gender_Other'], axis=1), train['stroke'],
                                            test_size=0.15, random_state=0)


from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(max_depth=5, random_state=0)
rf.fit(X_tr, y_tr)
pred = rf.predict_proba(X_val)

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_val, pred[:,1]))

pred = rf.predict_proba(test)

pd.DataFrame({
    'id' : test_id,
    'stroke' : pred[:,1]
}).to_csv('0000.csv', index=False)

 

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

답변 1

0

퇴근후딴짓

train에 있는 카테고리 3개가 test의 카테도리 2개를 포함한다면 레이블 인코딩하면됩니다.

포함하지 않는다면 말씀한대로 합쳐서 진행하면 됩니다.

작업형2의 평가는 csv로만 평가받습니다. 코드는 평가대상이 아닙니다 🙂

0

Jason

늦은 시간에 답변 감사합니다. 선생님

 

그럼 훈련용/검증용 데이터 구분시에도 위와 같은 방법으로 해도 평가에는 상관없는거죠?

 

ㅇ train gender 컬럼과 test gender 컬럼내 유니크한 값 수가 달라

- train은 3개, test는 2개

train/test를 각각 원핫인코딩하고 아래와 같이 1개 컬럼이 추가로 있는 train의 gender_Other을 삭제해버림

 

X_tr, X_val, y_tr, y_val = train_test_split(train.drop(['stroke', 'gender_Other'], axis=1), train['stroke'], test_size=0.15, random_state=0)

1

퇴근후딴짓

음.. 삭제를 하는 형태로는 불가능할 것 같진 않는데

일반적으로는 잘 사용하진 않는 방법이에요!~~ test는 미래데이터이고 언제든 그 값이 또나올 수 있거든요
그렇지만 시험용으로는 문제 없어보입니다.

수강 연장 문의드립니다.

0

31

2

강의 연장 문의

0

33

2

수강 신청 연장 문의드립니다.

0

49

2

작업형 1번문제... 환경관련

0

32

2

12회 기출은 언제 업데이트 될까요??

0

40

2

8/6 작성한 연장문의 질문글에 대한 재요청

0

39

2

수강기간 연장 문의

0

41

2

수강기간 연장문의

0

37

2

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

0

38

2

수강 기간 연장 문의

0

47

2

수강연장 가능 문의 (기간 약 한달반)

0

60

2

수강기간 연장 가능할까요 선생님

0

74

2

Section15. 수업에 사용하는 데이터 주소가 다 보이지 않아서 실습을 위한 데이터를 다운 받지 못하고 있습니다.

0

56

3

수강연장요청 문의

0

92

2

아무래도 다음 시험 연장은 어렵겠죠?

0

110

2

빅분기 12회 결과 관련 문의

0

114

1

책이랑 강의랑 순서나 예제가 다른것 같네요

0

83

2

수강연장 문의

0

107

2

재검토 요청 방법 좀 알려주셔요...-.-;;

0

108

2

12회 실기 질문(작업형 2)

0

94

2

뒤로가기 버튼 같은 것이 있나요?

0

67

1

강의 연장 문의

0

100

2

출력값 질문

0

74

2

수업노트가 어디에 있나요?

0

64

1