inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

812

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

19

1

강의 연장 문의

0

17

1

출력값 질문

0

26

2

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

0

27

1

실기시험 제출관련

0

158

2

6.20 작업형 2 과적합

0

164

3

코딩팡 장업형2 베이스 라인 인코딩 종류 질문

0

51

2

로지스틱회귀, 회귀

0

51

2

회귀 문제를 풀때 질문입니다.

0

58

1

불균형 처리 후 성능이 더 낮아졌다면,

0

64

2

실기 체험 제2유형 에러 문의

0

64

1

LIGHTGBM 으로 하면 pred값이 소수점 6자리까지 나오는게 맞나요

0

51

2

3번문제 등분산 가정

0

49

2

작업형3 target 형 변환 질문

0

36

2

[작업형1] 연습문제 섹션1 ~ 10 의 section4

0

39

3

원핫인코딩과 레이블 인코딩에서 concat

0

60

2

제2유형 질문입니다.

0

48

2

C()

0

44

2

작업형 2에서 strafity 적용 유무

0

52

2

수강 기간 연장 가능 여부 문의드립니다.

0

61

1

ols

0

44

2

2유형 작성관련 질문(일반 심화)

0

40

2

2유형 작성관련 질문

0

41

2

2유형 object컬럼 개수 다르면

0

48

2