inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

기사 (2회): 기출유형-작업형2 풀이 오류 해석

해결된 질문

611

가보자고

작성한 질문수 9

1

안녕하세요.

강의 잘 듣고 있습니다. 매번 질문에 답해주셔서 감사합니다.

아래와 같이 코드를 짰는데

데이터 프레임 만들기 submit = 에서 오류가 발생해서요.

해당 오류가... 무슨 뜻인지 알려주세요.

앞에서 test_id삭제하고 .pop을 빼먹었는데... 이것 땜에 발생했을까요?

<오류내역>


ValueError Traceback (most recent call last)

<ipython-input-30-13b5884e1ac8> in <cell line: 63>()

61

62 # 데이터 내보내기

---> 63 submit = pd.DataFrame(

64 {

65 'ID': X_test['ID'],

/usr/local/lib/python3.10/dist-packages/pandas/core/internals/construction.py in extractindex(data)

678 f"length {len(index)}"

679 )

--> 680 raise ValueError(msg)

681 else:

682 index = default_index(lengths[0])

ValueError: array length 1760 does not match index length 2200

<코드>


# 라이브러리 및 데이터 불러오기
import pandas as pd

X_train = pd.read_csv("X_train.csv")
y_train = pd.read_csv("y_train.csv")
X_test = pd.read_csv("X_test.csv")

# EDA
print(X_train.head())
print(X_test.head())
print(y_train.head())


pd.set_option('display.max_columns', None) 

print(X_train.shape, X_test.shape, y_train.shape)  # (8799, 11) (2200, 11) (8799, 2)
print(X_train.info)
print(X_train.describe())
print(X_train.describe(include = 'object')) # Warehouse_block, Mode_of_Shipment, Product_importance, Gender
print(X_train.isnull().sum())  # 결측치 없음

print(y_train.value_counts('Reached.on.Time_Y.N')) #1    5236, 0    3563

# 데이터 전처리

# 피처엔지니어링
# 라벨 인코딩
from sklearn.preprocessing import LabelEncoder
cols = ['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender']
cols1 = X_train.select_dtypes(include = 'object').columns

for col in cols:
  la = LabelEncoder()
  X_train[col] = la.fit_transform(X_train[col])
  X_test[col] = la.transform(X_test[col])

  # 데이터 분할
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train['Reached.on.Time_Y.N'],test_size = 0.2, random_state = 2023)

print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)  #(7039, 11) (1760, 11) (7039,) (1760,)

# 모델링
#분류(랜덤포레스트)
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(random_state = 2023)
model.fit(X_tr, y_tr)
predict = model.predict_proba(X_val)
print(predict)
print(predict[:,1])


# 평가(ROC_AUC_SCORE)
from sklearn.metrics import roc_auc_score
pred=roc_auc_score(y_val, predict[:,1])
print(pred)   # 랜덤포레스트 분류: 0.7340529818205483

# 예측
result = model.predict_proba(X_test)

# 데이터 내보내기
submit = pd.DataFrame(
    {
        'ID': X_test['ID'],
        'Reached.on.Time_Y.N' : predict[:,1]
    }
)

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

 

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

답변 1

1

퇴근후딴짓

안녕하세요
ValueError: array length 1760 does not match index length 2200
는 데이터 길이가 다르다는 뜻이에요

  1. 1760을 한번 찾아봐 주시겠어요? 잘 살펴보면 val 길이가 1760인 것을 확인할 수 있어요

  2. 그렇다면 ID값은 2200개이고 예측값(val)이 1760이 아닌지 의심해 볼 여지가 있겠네요

  3. 예측값은 'Reached.on.Time_Y.N' : predict[:,1] 입니다. predict 변수를 따라 가볼까요?

  4. 따라 올라가보니 predict은 test를 예측한 것이 아니라 val을 예측한 결과네요

  5. test 예측한 것을 다시 찾아보면 result = model.predict_proba(X_test) -> result라는 변수를 썼네요

  6. 결과적으로 predict변수가 아니라 result변수를 사용해야 합니다.

1

가보자고

항상 감사드립니다

작업형2 카테고리

0

8

1

110강 회귀_8번 문의

0

9

2

XGBRegressor 학습 시 warning 출력

0

13

2

데이터 프레임을 변경해도 되나요?

0

10

2

10회 기출 작업형3 문제 2-1 질문

0

16

2

작업형 2 질문

0

16

2

작업형 2 템플릿 확인 요청

0

13

2

작업형2 인코딩 질문

0

22

2

작업형 3 벼락치기 공부방법 질문

0

31

2

기출 11회 작업형 2_전체 데이터 학습 여부

0

32

2

예측값 결과 소수점 차이

0

28

2

기출 문제와 실전챌린지 연습문제 무엇부터 푸는게 나은가요?

0

36

1

전처리 train() test([ ])

0

23

2

작업형 1 배경지식 질문

0

33

2

옳게 풀은건지 질문드립니다!

0

22

1

roc_auc_score

0

30

2

추가질문 합니다

0

22

2

시험환경 구름

0

21

2

2유형 질문드려요

0

21

2

RandomForest vs lgb

0

30

2

전처리 관련질문

0

29

3

작업형3 기출

0

22

2

유형2에서 데이터분할 생략 가능여부

0

33

2

9회 기출 유형3 질문

0

23

2