해결된 질문
작성
·
608
0
선생님 안녕하세요, 원핫인코딩과 라벨인코딩 중에서 어떤 것으로 인코딩을 수행할지에 대한 기준이 헷갈려, 질문을 남깁니다.
원핫인코딩 시에, train = pd.get_dummies(train) 과 같이 int/float형 데이터와 모두 합쳐서 인코딩을 진행해도 문제가 없나요??
라벨인코딩처럼 object형 컬럼만 추출해서 원핫인코딩을 진행하려고하니 오류가 발생하여 혹시 어떤 문제가 있는건지 궁금합니다!
# object 컬럼 원핫/라벨인코딩
cols = train.select_dtypes(include='object').columns
# print(cols)
for col in cols:
train[col] = pd.get_dummies(train[col])
test[col] = pd.get_dummies(test[col])
위와 같은 코드를 추가하여 실행하였을 때 아래와 같은 오류가 발생합니다.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-38-cba2437473af> in <cell line: 23>() 22 # print(cols) 23 for col in cols: ---> 24 train[col] = pd.get_dummies(train[col]) 25 test[col] = pd.get_dummies(test[col]) 26
/usr/local/lib/python3.10/dist-packages/pandas/core/frame.py in _set_item_frame_value(self, key, value) 4098 len_cols = 1 if is_scalar(cols) else len(cols) 4099 if len_cols != len(value.columns): -> 4100 raise ValueError("Columns must be same length as key") 4101 4102 # align right-hand-side columns if self.columns
ValueError: Columns must be same length as key
답변 2
0
train = pd.get_dummies(train) 로 적용하면 자동으로 object컬럼만 인코딩 합니다.
train[col] = pd.get_dummies(train[col])는 잘못된 방법이에요 !! 원핫인코딩하면 컬럼수가 달라지는데 대입할 수가 없는 코드 입니다. 1번 방법을 추천합니다.
만약 2번방법으로 하고자 한다면 pd.get_dummies(train[col]) 결과를 새로운 변수에 담아서 수치형 데이터와 concat하는 방법이 있습니다.
자세히 답변해주셔서 감사합니다! 원핫인코딩/라벨인코딩 을 선택할때, 평가 점수를 배제하고 무조건 한가지로 선택해서 사용해야하는 경우가 있는지 확인하고 싶습니다.
최종 평가 점수를 고려하지 않고, object 데이터를 수치형 데이터로 인코딩 하기 위해 베이스라인으로 코드를 작성한다고할 때, 원핫인코딩과 라벨인코딩 중에서 아무거나 선택하여 진행해도 오류와 같은 문제는 없나요??
원핫인코딩이 object 컬럼을 따로 추출해서 넣지 않아도 된다면 코드작성이 더 간단할 것 같아서 시험환경에서는 한가지 방법으로 우선 최대한 통일하여 진행을 하고 싶어서 질문드립니다!
빠른 답변 정말 감사드립니다!!
선생님 덕분에 그냥 암기식 공부가 아니라, 이해를 기반한 즐거운 공부를 할 수 있어서 너무 기쁩니다. 행복한 하루 되세요 :)