inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

모델링 및 평가(분류)

머신러닝 실행 오류(ValueError: Input X contains NaN.) 질문드립니다

해결된 질문

4056

duddl

작성한 질문수 7

0

 

안녕하세요. 동영상대로 따라하다가 에러가 났는데 잘못된 부분을 찾지 못해 질문드립니다 ㅠㅠ

[고/저소득을 0또는 1로 분류할 때]

저는 x,y,test로 3개 데이터를 불러온 후->전처리->피처엔지니어링까지 했고

 

inty=(y['income']=='>50K').astype(int)

from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val= train_test_split(x, inty, test_size=0.1, random_state=100)


x_tr.shape, x_val.shape, y_tr.shape, y_val.shape

여기서 값이 ((26373, 15), (2931, 15), (26373,), (2931,))

이렇게 나오면서 정상 실행 됐는데요..

from sklearn.ensemble import RandomForestClassifier
rf=RandomForestClassifier()
rf.fit(x_tr,y_tr)
pred=rf.predict(x_val)

**여기에서 아래와 같은 오류가 납니다.ㅠㅠ 왜 그런 걸까요ㅠㅠㅠ
<ipython-input-112-e7142a22ea96> in <cell line: 3>()
      1 from sklearn.ensemble import RandomForestClassifier
      2 rf=RandomForestClassifier()
----> 3 rf.fit(x_tr,y_tr)
      4 pred=rf.predict(x_val)

/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py in _assert_all_finite(X, allow_nan, msg_dtype, estimator_name, input_name)
    159                 "#estimators-that-handle-nan-values"
    160             )
--> 161         raise ValueError(msg_err)
    162 
    163 

ValueError: Input X contains NaN.

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

답변 2

1

퇴근후딴짓

  1. x 와 y 데이터 갯수가 맞아야 해요 행을 삭제 한다면 합쳐서 진행해주세요! 3개가 x에서는 삭제되었는데 y에서는 삭제가 되지 않은 것 같아요 !!

  2. test 데이터는 이상치 처리 하는 것이 아닙니다. test=test[test['age']>=0] 에서 음수가 없는 것으로 알지만 혹시 음수가 있어 행이 삭제 된다면 작업형 2에서는 0점 처리됩니다.

    그 이유는 우리가 예측해야 하는 행이 100개인데 수험생이 임의로 90개만 제출하면 체점을 할 수가 없어 0점 처리 됩니다.

  3. 이상치 처리는 꼭 해야 하는 것이 아닌 선택입니다. 꼭 해야 하는건 아니니 이상치 처리는 제외하고 학습하는것을 추천해요!

1

duddl

아아! 네!여기에 주의해야 할 두 가지 경우가 다 포함이었네요!! 너무 감사합니다!!

0

퇴근후딴짓

데이터 전처리가 진행 되었을가요? 결측치가 처리되지 않아서 나타나는 에러입니다

완성된 코드에서 제공되는 노트북을 확인한 후 결측치 처리 부탁해요!!

0

duddl

넵!! 감사합니다!! 결측치->이상치 처리 순으로 했고, 결측치 처리에서는 삭제 없이 모든 값을 대체했습니다!!

그리고, 처음부터 코드를 다시 돌려봤는데요

원래 x,y에서 29304개이던 데이터가

age 이상치 처리에서

x=x[x['age']>=0]

test=test[test['age']>=0]

이렇게 하면 x가 29301개로 바뀌고 에러코드도

ValueError: Found input variables with inconsistent numbers of samples: [29301, 29304]

이렇게 나옵니다.

 

그런데, age이상치 처리하는 함수를 빼고 다시 실행하면 갯수가 맞아서 이상없이 진행되는데, age 이상치처리하는 과정이 잘못된걸까요?ㅜㅜ (test갯수는 생략했습니다) 감사합니다!!!

시계열 데이터 날짜와 시간 format

0

11

1

평가지표 F1 스코어 질문드립니다.

0

14

2

작업형 2 기출7회분에서

0

29

2

작업형2 모의문제1 (30강)

0

26

2

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

0

33

2

수강 계획과 관련해 문의 드립니다.

0

26

2

작업형1 - 연습문제 16~39 풀이는 몇강을 보면 되나요?

0

49

2

작업형 1 -연습문제 4-6

0

35

2

작업형 1 유형 부분

0

42

2

작업형 1 (삭제예정, 구 버전)

0

51

2

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

0

37

2

2유형 레이블 인코딩 VS 원핫 인코딩

0

37

3

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

0

44

2

인덱스 슬라이싱

0

36

2

질문 드립니다.

0

50

2

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

0

46

2

수강 연장 문의

0

63

2

강의자료 일괄 다운로드

0

58

2

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

0

48

2

list 문제 질문드립니다~

0

38

2

빅분기 실기 12회 재도전

0

63

2

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

0

51

2

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

0

46

2

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

0

52

2