• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

StandardScaler 부분 코드에 대해서 질문 있습니다.

21.01.27 15:11 작성 조회수 95

0

StandardScaler 부분 코드를 자세히 읽어보니

get_preprocessed_df 함수를 정의하셨는데, 

밑의 코드를 보니 그 함수를 적용하지 않고 바로 card_df를 이용하여 다시 학습을 시키신거 같은데 그렇게 되면 원본 Amount 속성의 값은 변화가 없게 되는거 아닌가요?

답변 2

·

답변을 작성해보세요.

0

mook0227님의 프로필

mook0227

질문자

2021.01.28

아하 착각을 했군요.. 감사합니다!

0

안녕하십니까,

get_train_test_dataset(dataframe)에서 다시 get_preprocessed_df()함수가 정의 되어 있습니다.

get_train_test_dataset(dataframe)을 불러서 get_preprocessed_df(dataframe)으로 사전 가공을 한 뒤에 학습데이터, 테스트 데이터를 나누고, 이를 이용하여 학습을 수행합니다.

get_preprocessed_df()는 scale변환, log 변환시 마다 함수가 재 정의 되므로 원본 Amount값을 그때마다 변경된 후 학습데이터, 테스트 데이터로 나누어지게 됩니다.

# 사전 데이터 가공 후 학습과 테스트 데이터 세트를 반환하는 함수.
def get_train_test_dataset(df=None):
    # 인자로 입력된 DataFrame의 사전 데이터 가공이 완료된 복사 DataFrame 반환
   df_copy = get_preprocessed_df(df)
.......
.......
def get_preprocessed_df(df=None):
    df_copy = df.copy()
    scaler = StandardScaler()
    amount_n = scaler.fit_transform(df_copy['Amount'].values.reshape(-11))
    
    # 변환된 Amount를 Amount_Scaled로 피처명 변경후 DataFrame맨 앞 컬럼으로 입력
    df_copy.insert(0'Amount_Scaled', amount_n)
    
    # 기존 Time, Amount 피처 삭제
    df_copy.drop(['Time','Amount'], axis=1, inplace=True)
    return df_copy
# get_preprocessed_df(df)가 적용된 후 학습및 테스트 데이터 반환
X_train, X_test, y_train, y_test = get_train_test_dataset(card_df)
감사합니다.