inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

작업형 2 파일 생성전 pred 순서에 오류

82

niut0598

작성한 질문수 1

0

안녕하세요 8회 작업형 2번을 간단한 방법을 풀다가 오류가 발생했는데 도통 뭐 잘못작성한지 모르겠습니다..

확인 부탁드리겠습니다!

 

import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/8_2/churn_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/8_2/churn_test.csv")

# print(train.shape, test.shape)
# train.head()
# train.isnull().sum()

# train = train.drop('CustomerID', axis = 1)
# tesT = test.drop('CustomerID', axis = 1)
target = train.pop('TotalCharges')

# cols = train.select_dtypes(include = 'O').columns
# # print(cols)
# from sklearn.preprocessing import LabelEncoder

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

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

from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state = 0)
# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)

# from sklearn.ensemble import RandomForestRegressor
# rf = RandomForestRegressor(random_state = 0)
# rf.fit(X_tr, y_tr)
# pred = rf.predict(X_val)
# print(pred)
# 937.577739684466

import lightgbm as lgb
model = lgb.LGBMRegressor(random_state = 0, verbose=-1)
model.fit(X_tr,y_tr)
pred = model.predict(X_val)
# 946.7024808036148

from sklearn.metrics import mean_absolute_error
print(mean_absolute_error(y_val, pred))

pred = model.predict(test)
submit = pd.DataFrame({'pred':pred})
submit.to_csv('result.csv',index = False)

# result = pd.read_csv('result.csv')

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

답변 3

0

niut0598

이전에 댓글 남겨주신거 찾았습니다!ㅠㅠ

빅분기 정말 어렵네요 ㅠㅠ 1유형도 다 못봤는데 ㅠㅠ

 

  • 숫자형 ID라면 모델에 넣어도 에러는 안 나지만, 여전히 의미가 없을 수 있습니다.

  • 문자형 ID는 one-hot 인코딩 시 너무 많은 컬럼을 만들 수 있어 삭제하는 게 일반적입니다.

 

2

원핫 인코딩 자체는 오류를 내지 않지만, 에러 메시지가 떴다면 해당 컬럼을 삭제한 뒤 다시 삭제하려고 해서 생긴 KeyError일 가능성이 큽니다. 삭제 코드와 데이터 불러오는 코드를 한 셀에서 함께 실행하면 문제를 예방할 수 있어요.

 

3 네, ID가 숫자면 원핫 인코딩 대상이 아닙니다.

 

4 ID가 문자인데 유니크 수가 너무 많은 상황이에요. train과 test ID가 같지도 않고요

설사 같다고 하더라도 train ID로 인해 컬럼이 4000개가 생겨버려요

1분 내에 학습하기에는 컬럼 수가 많습니다.

합쳐서 진행 보다는 ID컬럼 삭제가 깔끔합니다. 합친수 인코딩 하면 컬럼수가 5000개가 넘어갈 수도 있어요 테스트 해보시죠!


0

퇴근후딴짓

아무래도 시간이 촉박해져서 그렇게 느끼실 것 같아요

남은 기간도 화이팅입니다. !!

0

niut0598

image.png

 

0

niut0598

오류는 현재 이런 메세지가 뜹니다!

0

퇴근후딴짓

오타가 보입니다. tesT

 

0

niut0598

어디에 오타가 있을까요? test로 다 입력이 되어있는걸로 보입니다!

0

퇴근후딴짓

제가 눈으로 봐서 잘못봤네요!

주석 처리되어 있으니 영향이 없어요

 

train = pd.get_dummies(train)
test = pd.get_dummies(test)
print(train.shape, test.shape)

(4116, 4159) (1764, 1807)로 train과 test 컬럼수가 달라졌어요

 

모든 값이 다른 ID가 문자인 경우 삭제 또는 합쳐서 인코딩이 필요합니다.

train = train.drop('customerID', axis = 1)
test = test.drop('customerID', axis = 1)

 

 

customerID 를 지우고 다시 작성해 주세요 눈으로 보기엔 문제 없었는데

특수문자가 들어간건지 문제가 있었어요

 

0

niut0598

와 감사합니다. 아직 행삭제 혹은 합치는거에 감이 없는데 어떻게 하면 구분 지을 수 있을까요?

말씀해주신대로 범주형 값이 유니크하면 삭제하고 데이터 전처리를 진행해야할까요?

0

퇴근후딴짓

삭제를 우선으로 하지 마시고 범주형 데이터는 인코딩을 진행하고 결제 치는 채워 주세요. 그리고 첫 번째 모델을 만들고 평가 지표 점수를 확인한 뒤에 여유가 있다면 두 번째 세 번째 모델을 만들어 주세요.

 

이 때는 모델을 변경하거나 전 처리를 달리 해 볼 수 있어요. 아이디가 수자 일때는 그대로둬도 괜찮습니다. 굳이 힘들게 삭제 할 필요 없습니다.

수강 연장 문의드립니다.

0

27

2

강의 연장 문의

0

31

2

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

0

44

2

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

0

30

2

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

0

39

2

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

0

38

2

수강기간 연장 문의

0

40

2

수강기간 연장문의

0

37

2

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

0

38

2

수강 기간 연장 문의

0

47

2

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

0

60

2

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

0

74

2

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

0

56

3

수강연장요청 문의

0

91

2

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

0

109

2

빅분기 12회 결과 관련 문의

0

113

1

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

0

83

2

수강연장 문의

0

107

2

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

0

106

2

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

0

94

2

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

0

67

1

강의 연장 문의

0

99

2

출력값 질문

0

74

2

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

0

64

1