인프런 커뮤니티 질문&답변

김민정님의 프로필 이미지
김민정

작성한 질문수

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

2회 기출유형(작업형2)

섹션12 작업형 2회 기출유형

해결된 질문

작성

·

286

0

섹션12 작업형 2회 기출유형

아래처럼 풀이했을 때, TypeError: float() argument must be a string or a real number, not 'LabelEncoder' 오류메시지 뜹니다. 어디서 오류가 난건지 이러한 풀이방법은 잘못된건지 알 수 있을까요?

 

# EDA

X_train = X_train.drop(columns = ['ID'])

X_test_id = X_test.pop('ID')

y_train = y_train.drop(columns = ['ID'])

 

# 수치형 데이터 스케일링

num = ['Customer_care_calls', 'Customer_rating', 'Cost_of_the_Product', 'Prior_purchases', 'Discount_offered', 'Weight_in_gms']

from sklearn.preprocessing import RobustScaler

scaler = RobustScaler()

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

X_test[num] = scaler.fit_transform(X_test[num])

 

# 범주형 데이터 원핫인코딩

cols = ['Mode_of_Shipment', 'Product_importance', 'Gender']

X_train = pd.get_dummies(data = X_train, columns = cols)

X_test = pd.get_dummies(data = X_test, columns = cols)

 

# 범주형 데이터 라벨인코딩

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()

X_train['Warehouse_block'] = encoder.fit(X_train['Warehouse_block'])

X_test['Warehouse_block'] = encoder.fit(X_test['Warehouse_block'])

 

# 분리

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

 

# 모델 및 평가

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

model.fit(X_tr, y_tr)

pred = model.predict_proba(X_val)

 

# 평가

from sklearn.metrics import roc_auc_score

roc_auc_score(y_val, pred[:, 1])

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

우선 에러가 난 곳은 인코딩 부분입니다. 아래과 같이 변경이 필요합니다. 둘다 fit만 하네요!

X_train['Warehouse_block'] = encoder.fit_transform(X_train['Warehouse_block'])
X_test['Warehouse_block'] = encoder.transform(X_test['Warehouse_block'])

 

그리고 수정해야할 부분은 # 수치형 데이터 스케일링 X_test은 transform만 사용해주세요!

X_train[num] = scaler.fit_transform(X_train[num])
X_test[num] = scaler.transform(X_test[num])

 

마지막 제일 중요한 csv 생성부분이 제일 중요하니 연습많이 해주세요!!

화이팅입니다.

김민정님의 프로필 이미지
김민정
질문자

네 감사합니다!

김민정님의 프로필 이미지
김민정

작성한 질문수

질문하기