inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

[시험환경에 적응하기:작업형2] 'DataConversionWarning'이유 알려주세요

해결된 질문

807

shinheesung1

작성한 질문수 1

0

작업형2를 아래와 같이 했는데

DataConversionWarning 나왔습니다

검색해보니 y_train 변경때문이며 ravel()을 사용하라고

하는데 이유 설명 부탁 드립니다

[error명]

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().

[작성내용]

import pandas as pd

X_test = pd.read_csv("data/X_test.csv")

X_train = pd.read_csv("data/X_train.csv")

y_train = pd.read_csv("data/y_train.csv")

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

# 사용자 코딩

#print(X_train.shape,X_test.shape,y_train.shape)

#print(y_train.isnull().sum())

#print(X_train['환불금액'].describe())

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

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

#print(X_train.isnull().sum())

X_train=X_train.drop('cust_id',axis=1)

X_test_id=X_test.pop('cust_id')

y_train=y_train.drop('cust_id',axis=1)

#print(X_test.head(2))

#print(X_train.select_dtypes(exclude='object').columns)

# '주구매상품', '주구매지점'

# '총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기'

from sklearn.preprocessing import LabelEncoder

cols=['주구매상품', '주구매지점']

for col in cols:

le=LabelEncoder()

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

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

#print(X_train.head())

from sklearn.preprocessing import MinMaxScaler

cols2=['총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기']

scaler=MinMaxScaler()

X_train[cols2]=scaler.fit_transform(X_train[cols2])

X_test[cols2]=scaler.transform(X_test[cols2])

#print(X_train.head(2))

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.3, random_state=2023)

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

#(2450, 9) (1050, 9) (2450, 1) (1050, 1)

from sklearn.metrics import roc_auc_score

from sklearn.ensemble import RandomForestClassifier

rf=RandomForestClassifier(random_state=2023)

rf.fit(X_tr,y_tr)

pred=rf.predict_proba(X_val)

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

#0.654227735236709

 

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

답변 1

0

퇴근후딴짓

결론부터 이야기 하면 아래와 같이 코드를 변경하면 워닝 없이 진행됩니다.

# y_train=y_train.drop('cust_id',axis=1)
y_train=y_train['gender']
  • 원인: 사이킷럿 fit(X, y) -> y, 학습할 때 y는 1차원 형태인 시리즈 형태여야 합니다. 그런데 drop으로 반환을 받게 되면 데이터프레임을 반환받아 2차원 형태의 데이터프레임으로 y가 생성됩니다.

  • 현상: 예측 결과는 정상적으로 작동하나 워닝(DataConversionWarning)이 발생합니다.

  • 해결방안: y 데이터를 대입할 때는 drop이 아닌 해당 변수를 지정해서 담아주세요!

화이팅입니다:)

 

1

shinheesung1

감사합니다

평가결과값 문의

0

5

1

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

0

15

1

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

0

17

2

작업형 2 기출7회분에서

0

32

2

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

0

28

2

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

0

35

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