강의

멘토링

로드맵

Inflearn brand logo image

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

khu0605님의 프로필 이미지
khu0605

작성한 질문수

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

데이터 전처리2 (인코딩, 스케일링)

train_copy 안할 경우 스케일링 코딩법

해결된 질문

작성

·

31

·

수정됨

0

  • 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!

  • 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요

  • 먼저 유사한 질문이 있었는지 검색해보세요

아래 코드 안 쓸경우,

# 데이터를 매번 새롭게 불러오기 위해 함수로 제작 함
def get_data():
    train_copy = train.copy()
    test_copy = test.copy()
    return train_copy, test_copy

아래처럼 입력하면 되나요?

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

display(train[cols].head(2))
train[cols] = scaler.fit_transform(train[cols])
test[cols] = scaler.transform(test[cols])
display(train[cols].head(2))

답변 2

0

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

네 정확합니다!

cols는 수치형 값만 있어야 하고요!

0

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

khu0605님이 제공한 코드의 컨텍스트에서, 데이터를 복사하지 않고 직접적으로 스케일링을 적용하는 방식에 대해 문의주셨습니다.

원본 데이터에 직접적으로 스케일링을 적용할 때는, 특히 데이터 변형 후 결과를 비교하거나 데이터 리셋이 필요할 경우에 대비할 수 없으므로 주의가 필요합니다. 따라서, 데이터의 원본을 유지하는 것이 필요하지 않은 경우에도 종종 데이터를 복사하여 작업하는 습관을 가지는 것이 좋습니다.

제시하신 두 코드 블록 중:

데이터 복사를 사용하지 않는 코드:

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

display(train[cols].head(2))
train[cols] = scaler.fit_transform(train[cols])
test[cols] = scaler.transform(test[cols])
display(train[cols].head(2))

이 코드는 데이터의 원본을 변경하는 작업을 의미합니다. 스케일링이 필요한 작업에서는 이렇게 해도 동작하며, 결과가 잘 보존될 수 있습니다. 스케일링 이후의 변형된 데이터가 의도한 형태로 잘 변환되었는지 결과를 확인하는 것이 가능합니다.

주의사항:

  • 데이터를 변경하기 전에, 데이터 분석이나 모델 학습 도중 원본 데이터를 참조하지 못해 문제가 발생할 수 있으니, 성능 평가 전 원본 데이터 복구가 필요한 경우 별도의 복사본을 유지하는 것이 좋습니다.
  • 학습 데이터를 적절하게 변환하더라도 테스트 데이터에 fit_transform을 사용하는 대신 transform을 사용해야 함에 주의하세요. 이는 fit이 데이터 전체를 참조하는 것을 막음으로써 모델의 일반화된 성능 평가에 이점을 줍니다.

이와 관련하여 추가적인 유사한 질문과 더 깊이 있는 답변을 확인하고 싶으시다면, 다음을 참고하시면 좋습니다:

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

khu0605님의 프로필 이미지
khu0605

작성한 질문수

질문하기