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

고준환님의 프로필 이미지
고준환

작성한 질문수

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

예시문제 작업형2(구 버전): 학습시간 최소화를 위해 구 버전은 삭제하고 있어요!

[col] [[col]] 차이

해결된 질문

작성

·

353

·

수정됨

1

안녕하십니까 강사님, 양질의 강의로 이해하기 쉽게 준비해주셔서 감사합니다.

실은 섹션 11, 예시문제 작업형 2, 16:57 쯤에 복습 중

for 문을 이용하여 조금 코드를 수정해보았습니다.

아래의 코드가 바로 정상 작동하는 일부 수정한 코드입니다.

from sklearn.preprocessing import MinMaxScaler

cols = ['총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기']
for col in cols:
    scaler = MinMaxScaler()
    X_train[col] = scaler.fit_transform(X_train[[col]])
    X_test[col] = scaler.transform(X_test[[col]])
X_train.head()

근데 바로 위의 `LabelEncoder`을 수행한 코드를 보면 for 문과 함께 [col]로 작성이 되어있는데, 이 일부 수정된 코드에서는 [col]을 적으면 왜 이 오류가 나오는지 잘 모르겠습니다.

ValueError: Expected 2D array, got 1D array instead:

[[col]] 를 작성해야만 정상 작동하더군요. 혹시 LabelEncoder를 적용한 바로 위의 코드와 어떤 차이가 있어서 []을 한번 더 기입해야 하나요?.

답변 3

2

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

코드를 수정해보셨다니 매우 좋은 학습 태도를 보이고 계시네요. 질문하신 부분에 대해 설명 드리면
MinMaxScaler는 기본적으로 2차원 배열을 입력으로 받습니다. 입력이 데이터 프레임이어야 합니다. 따라서 데이터 프레임으로 변경하기 가장 쉬운 방법이 대괄호 2개를 사용하는 것이에요~

LabelEncoder는 1차원 배열을 입력으로 받습니다. 입력이 시리즈 형태면 됩니다. 대괄호 1개를 사용하는 것이에요!!


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

예시문제 작업형2 영상 오늘 밤에 업데잇할 예정이에요!

내일 이후 재시청 부탁드리겠습니다 🙂

1

저도 이부분이 헷갈렸는데, 감사합니다.

 

혹시 그럼 Scaler는 2차원 배열, Encoder는 1차원 배열을 입력받는다고 이해하면 될까요?

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

네 맞아요 그래서 scaler는 반복문 없이 여러 컬럼에 바로 적용가능하고,

인코딩은 반복문으로 컬럼 하나씩 반영해야 합니다.

1

고준환님의 프로필 이미지
고준환
질문자

그렇군요. 강사님 덕분에 이제 궁금했던 점이 풀렸네요 ㅎㅎ 감사합니다. 날이 많이 춥습니다 환절기 감기 유의하시고 좋은 한주 보내시길 바랍니다!

고준환님의 프로필 이미지
고준환

작성한 질문수

질문하기