inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

6회 기출 작업형2 오류 파악

해결된 질문

70

작성자 없음

작성한 질문수 0

0

import pandas as pd
train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/6_2/energy_train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/6_2/energy_test.csv")


X_train = train.drop(['Heat_Load'], axis = 1)
y_train = train['Heat_Load']
X_test = test

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
X_train['Roof'] = encoder.fit_transform(X_train['Roof'])
X_test['Roof'] = encoder.transform(X_test['Roof'])
X_train['Height'] = encoder.fit_transform(X_train['Height'])
X_test['Height'] = encoder.transform(X_test['Height'])
X_train['Orient'] = encoder.fit_transform(X_train['Orient'])
X_test['Orient'] = encoder.transform(X_test['Orient'])

num_columns = X_train.select_dtypes(exclude = 'object').columns
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train[num_columns] = scaler.fit_transform(X_train[num_columns])
X_test[num_columns] = scaler.transform(X_test[num_columns])

from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size =0.2, random_state=2025)
print(X_train.shape, X_val.shape, y_train.shape, y_val.shape)

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(X_train, y_train)
y_val_pred = model.predict(X_val)

 ValueError: could not convert string to float: 'High'

위와 같이 작성하였는데 해당오류가 뜹니다. 라벨인코딩은 진행하였는데 왜 오류가 발생할까요??.. 원핫인코딩을 진행해야하나요?

 

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

답변 2

0

퇴근후딴짓

삭제된 질문으로 확인

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

chltjgmlexit님, 질문 주신 코드에서 발생한 오류는 LabelEncoder를 사용할 때 객체 데이터가 완전히 수치로 변환되지 않아서 발생한 문제입니다. LabelEncoder는 주로 범주형 데이터를 순차적인 정수로 변환할 때 사용되지만, 여러 열에 대해 동시에 라벨 인코딩이 올바르게 완료되지 않았거나, 인코딩 대상이 아닌 열에 대해 인코딩을 시도한 것일 수 있습니다.

이 문제를 해결하기 위해서는 다음 두 가지 방법을 고려해볼 수 있습니다:

  1. OneHotEncoding 사용: LabelEncoder 대신 OneHotEncoder를 사용하면 모든 범주형 특성이 각각의 열로 변환되어 데이터 간의 관계를 더 잘 유지할 수 있습니다.
   from sklearn.preprocessing import OneHotEncoder

   encoder = OneHotEncoder(drop='first', sparse=False)
   X_train_encoded = encoder.fit_transform(X_train[['Roof', 'Height', 'Orient']])
   X_test_encoded = encoder.transform(X_test[['Roof', 'Height', 'Orient']])

   X_train = X_train.drop(['Roof', 'Height', 'Orient'], axis=1)
   X_test = X_test.drop(['Roof', 'Height', 'Orient'], axis=1)

   X_train = pd.concat([X_train, pd.DataFrame(X_train_encoded)], axis=1)
   X_test = pd.concat([X_test, pd.DataFrame(X_test_encoded)], axis=1)
  1. pd.get_dummies() 함수 사용: Python의 pandas 라이브러리에서 제공하는 get_dummies 함수를 활용하여 범주형 변수를 더미 변수로 변환하는 방법도 있습니다.
   X_train = pd.get_dummies(X_train, columns=['Roof', 'Height', 'Orient'], drop_first=True)
   X_test = pd.get_dummies(X_test, columns=['Roof', 'Height', 'Orient'], drop_first=True)

이러한 방식으로 코드를 수정하면 범주형 데이터가 알맞게 변환되어 오류를 줄일 수 있습니다.

관련된 다른 유사한 해결 사례로 아래 링크의 답변들을 참고할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

빅이시 작업형2 기초 - 케이스 1~3 관련 문의

0

7

1

데이터프레임 슬라이싱 인덱싱 질문2

0

11

1

단일표본검정, 샤피로검정, 윌콕슨검정

0

20

2

강의자료 다운로드 여부

0

18

1

문제에 첨부된 예시와 실제 출력된 샘플 비교

0

16

2

원핫 인코딩 관련

0

26

2

타겟 분리

0

22

2

Id 삭제

0

25

2

roc_auc_score 질문: 작업형2 모의문제3 09분 48초

0

23

2

원핫인코딩 코드 질문

0

23

2

map 함수 사용 필수적인가요

0

31

2

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

0

39

2

34강 평가지표

0

32

2

103강 작업2형 전처리(레이블인코딩 부분) 오류

0

25

3

작업형1_section14 문의

0

20

2

작업형1_연습문제 7번 관련입니다.

0

24

2

데이터 프레임 슬라이싱 혹은 데이터 선택하기가 어렵습니다.

0

22

2

크로스 밸리데이션 질문

0

26

2

로지스틱 회귀분석 질문

0

27

2

수치형 데이터만 선택하여 푸는 경우에 오답확률이 높아질까요?

0

31

2

2유형 object 컬럼 인코딩 관련 질문

0

44

2

하이퍼파라미터 변수

0

35

2

52강 이원분산분석

0

32

2

실제시험환경에서 작업형1,2,3의 문제풀이 순서

0

40

2