inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

[작업형2] 연습문제 섹션 3

작업형2 연습문제 섹션3

해결된 질문

39

합격

작성한 질문수 40

0

Section 3. 항공권 가격 예측

  1. # 컬럼 삭제

train = train.drop('flight', axis=1)

test = test.drop('flight', axis=1)

컬럼삭제한 이유는 무엇이죠?

print(train.describe(include="O"))

print(test.describe(include="O"))이걸 돌려봤는데

트레인에서 플라이트 유니트 1153

테스트에서 플라이트 유니크가 4502 이렇게 달라서 컬럼 삭제하는건가요?

어떨 때 컬럼 삭제해야하는지, 또 시험에 어떤 형식이 나올때 삭제해야하는지 궁금합니다

 

 

2.제가 코딩을

print(train.shape, test.shape)

train=pd.get_dummies(train)

test=pd.get_dummies(test)

print(train.shape, test.shape)

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)

이렇게 했는데

(10505, 11) (4502, 10)

(4502, 9) (4502, 10)

(4502, 37) (4502, 930)

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

/tmp/ipython-input-2712245612.py in <cell line: 0>()

20 print(train.shape, test.shape)

21 from sklearn.model_selection import train_test_split

---> 22 X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0)

23 print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)

3 frames

/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)

473 uniques = np.unique(lengths)

474 if len(uniques) > 1:

--> 475 raise ValueError(

476 "Found input variables with inconsistent numbers of samples: %r"

477 % [int(l) for l in lengths]

ValueError: Found input variables with inconsistent numbers of samples: [4502, 10505]

이렇게 오류가 뜹니다

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

답변 2

0

퇴근후딴짓

Section 3. 노트북 업데이트 했습니다.

flight는 인코딩 처리가 어려워 삭제 했어요! 확인한대로 유니크가 너무 달라서요!

다루는 방법을 노트북에 추가했습니다. 새로 불러와주세요 (심화 학습입니다)

 

아래 AI 가 설명한대로 합쳐서 인코딩이 필요한 상황 같습니다.

인코딩 후 타겟이 달라진것으로 보여요!

 

 

 

 

 

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 합격님.

항공권 가격 예측 문제에서 컬럼을 삭제하는 이유와 데이터 구조 관련하여 문의 주신 내용에 대해 설명드리겠습니다.

1. 컬럼 삭제의 이유

  • 고유 값의 불일치: train 데이터셋과 test 데이터셋에서 flight 컬럼의 유니크 값 개수가 크게 다르기 때문에 이 컬럼이 데이터 분석에 유용하지 않을 수 있습니다. 예를 들어 flight ID처럼 범주형 데이터가 크게 다를 경우, 이러한 컬럼은 모델에 불필요한 잡음을 추가할 수 있습니다. 특히 머신러닝 모델은 각 범주가 서로 다른 정보를 가진다고 이해할 수 있으며, 차이가 클 경우 모델의 예측에 혼란을 줄 수 있습니다.
  • 모델의 성능 및 복잡성: 많은 유니크 값을 포함하는 범주형 데이터는 원핫 인코딩 시 매우 많은 수의 열을 생성하게 되고 이는 데이터 처리에 부담을 줄 수 있습니다. 데이터셋의 크기와 모델의 학습 시간, 복잡성을 줄이기 위해 이런 컬럼은 제거하는 것이 일반적입니다.

2. 데이터셋의 불일치 문제

  • 에러 발생 원인: train_test_split 이전에 train 데이터셋과 test 데이터셋에 각각 이루어진 get_dummies 처리 결과 컬럼 수가 다릅니다. 이는 두 데이터셋에서 원핫 인코딩 후의 열 형식이 다르게 만들어져 발생하는 문제입니다.
    • traintest를 합쳐서 get_dummies 처리한 후, 다시 나누는 것이 일반적입니다. 이렇게 하면 모든 범주가 동일한 컬럼을 가지게 되어 데이터 구조가 일치하게 됩니다.

해결 방법

  1. 데이터를 합쳐 인코딩 후 분리:
    
    full_data = pd.concat([train, test], axis=0)
    full_data = pd.get_dummies(full_data)
    train, test = full_data.iloc[:len(train)], full_data.iloc[len(train):]
    

    위 방법으로 데이터를 인코딩 후 나누면 각 데이터셋의 형태가 일치하게 되어 train_test_split에서 발생하는 에러를 해결할 수 있습니다.

추가적인 참고 링크

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

11회 기출 유형(작업형1) 2번 정답

0

7

1

f1 score 질문

0

6

1

10회 작업형 2 인코딩 질의

0

6

1

53번 강의에서 갑자기 수업노트가 없어졌습니다.

0

10

2

28:19 roc_auc이유

0

15

2

수강연장문의

0

15

2

전체적인 머신러닝 순서

0

10

1

빅분기 실기 유형2질문

0

15

1

ID 전처리 이유

0

28

2

데이터제공

0

23

2

예시문제 작업형3 꼬리질문2번

0

15

1

데이터 개수를 구할 때, len과 value_counts 차이

0

19

2

작업형 2 제출방

0

19

2

인코딩 스케일링 순서

0

20

2

실제 시험에서도 공식을 문제에서 주는지

0

20

2

수강 연장 문의

0

17

2

작업형2 정리한 내용 확인 부탁드립니다 ㅜㅜ

0

21

1

14강 "" 사용 관련 질문

0

22

2

캐글 제출 점수

0

26

2

기출 마무리 방법

0

50

2

빅이시 작업형2 기초 - 케이스 1~3 관련 문의

0

33

6

데이터프레임 슬라이싱 인덱싱 질문2

0

29

2

단일표본검정, 샤피로검정, 윌콕슨검정

0

38

2

강의자료 다운로드 여부

0

39

2