inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

예시문제 작업형2(ver. 2023)

pred 데이터프레임 행 개수 문의

해결된 질문

102

juhyun991002

작성한 질문수 6

0

안녕하세요 섹션11 예시 문제를 아래와 같이 작성해보았는데,

모델을 통해 예측한 결과의 데이터프레임 shape이 평가용 데이터 개수와 동일하지 않고 학습용 데이터 개수와 동일하게 생성되었습니다.

아래 코드의 어떤 부분에서 실수한 것인지 문의드립니다ㅠㅠ

############################

import pandas as pd

train = pd.read_csv("data/customer_train.csv")

test = pd.read_csv("data/customer_test.csv")

# 사용자 코딩

# 결측치 채우기

train['환불금액'] = train['환불금액'].fillna(train['환불금액'].mean())

test['환불금액'] = test['환불금액'].fillna(test['환불금액'].mean())

# 회원 ID 제거, test 데이터셋의 id는 일단 남겨둠

# train = train.drop(['회원ID'], axis = 1)

# test_id = test.pop('회원ID')

# 타겟 데이터 분리

X_train = train.drop(['성별'], axis = 1)

y_train = train['성별']

# 수치형 데이터, 범주형 데이터 구분

n_train = X_train.select_dtypes(exclude = 'object')

c_train = X_train.select_dtypes(include = 'object')

n_test = test.select_dtypes(exclude = 'object')

c_test = test.select_dtypes(include = 'object')

# 수치형 데이터 Standard Scaling

from sklearn.preprocessing import StandardScaler

cols = list(n_train.columns)

scaler = StandardScaler()

n_train[cols] = pd.DataFrame(scaler.fit_transform(n_train[cols]))

n_test[cols] = pd.DataFrame(scaler.transform(n_test[cols]))

# 범주형 데이터 Label Encoding

from sklearn.preprocessing import LabelEncoder

cols = list(c_train.columns)

for col in cols:

le = LabelEncoder()

c_train[col] = le.fit_transform(c_train[col])

c_test[col] = le.transform(c_test[col])

# 데이터들 다시 합침

X_train = pd.concat([n_train, c_train], axis = 1)

test = pd.concat([n_train, c_train], axis = 1)

# train 데이터, validation 데이터 분리

from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size = 0.15, random_state = 0)

# RandomForest 수행

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state = 0)

rf.fit(X_tr, y_tr)

pred_proba = rf.predict_proba(X_val)

# 검증

from sklearn.metrics import roc_auc_score

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

####################

# baseline : 0.6064200601928629

# 회원 ID 제거 안 함 : 0.6098212640501197

# 실제 예측

pred = rf.predict(test)

submit = pd.DataFrame({

'pred' : pred

})

submit.to_csv("result.csv", index = False)

result = pd.read_csv("result.csv")

print(result.shape)

# 답안 제출 참고

# 아래 코드는 예시이며 변수명 등 개인별로 변경하여 활용

# pd.DataFrame변수.to_csv("result.csv", index=False)

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

답변 2

0

퇴근후딴짓

안녕하세요!
이 부분에서 test를 처음 불러온 데이터가 아닌 다시 대입했어요

# 데이터들 다시 합침

X_train = pd.concat([n_train, c_train], axis = 1)
test = pd.concat([n_train, c_train], axis = 1)

 

학습차원에서 이렇게 준비하는것 응원합니다.

실제 시험에서는 간단하게 풀이되었어요

꿀팁 - 한가지로 작업형2 풀이 방법 참고

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. juhyun991002님이 질문해주신 문제에 대해 답변 드리겠습니다.

코드를 보면, X_traintest 데이터를 다시 합칠 때 n_trainc_train을 사용하셨습니다. 이는 기계적으로 train 데이터에 해당하는 n_trainc_train을 사용했기 때문으로 보입니다. 정확한 방법은 test 데이터셋을 사용해야 합니다. 따라서 X_train = pd.concat([n_train, c_train], axis=1) 후에 test 데이터에 대해서는 X_test = pd.concat([n_test, c_test], axis=1)과 같이 코드를 수정하셔야 합니다.

즉, X_traintest를 합칠 때 다음과 같이 코드를 수정해 보세요:

X_train = pd.concat([n_train, c_train], axis=1)
X_test = pd.concat([n_test, c_test], axis=1)

이렇게 하면 rf.predict(test) 부분이 rf.predict(X_test)로 바뀌게 될 것이고, 이로 인해 예측 결과가 test 데이터의 샘플 수와 맞아 떨어질 것입니다.

본 문제와 유사한 기존 해결 방법을 포함한 게시글은 다음과 같습니다:
- 비슷한 문제에서 RandomForest를 이용한 데이터 예측

이 게시글에서는 데이터 전처리 및 분할, 모델 학습 및 예측 등에서 발생할 수 있는 오류와 해결 방법을 자세히 풀어주고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의 업데이트

0

18

1

수강 연장 문의드립니다.

0

55

2

강의 연장 문의

0

48

2

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

0

61

2

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

0

42

2

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

0

58

2

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

0

48

2

수강기간 연장 문의

0

51

2

수강기간 연장문의

0

47

2

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

0

52

2

수강 기간 연장 문의

0

50

2

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

0

71

2

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

0

77

2

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

0

62

3

수강연장요청 문의

0

96

2

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

0

113

2

빅분기 12회 결과 관련 문의

0

118

1

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

0

85

2

수강연장 문의

0

108

2

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

0

109

2

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

0

96

2

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

0

71

1

강의 연장 문의

0

102

2

출력값 질문

0

76

2