Let's enjoy our life

더미변수 전환, 전환 되돌리기 파이썬 코드 (Dummy variable Python code) 본문

Study/Python

더미변수 전환, 전환 되돌리기 파이썬 코드 (Dummy variable Python code)

IT파스칼 2021. 2. 4. 15:54

 

 

가변수(Dummy variable, 假變數)란 독립변수를 0과1로 변환한 변수를 의미한다.

일반적인 경우 그 사실 여부에 대해 예/아니오로 확인 가능한 질적 변수(예: 남자인가? 대학교를 졸업했는가?)는 회귀 분석에 직접 투입하는 것이 불가능하다. 이러한 질적 변수를 회귀분석에 사용하기 위해 그 가부를 0 혹은 1 의 숫자 형태로 대응시킨 변수를 가변수라 한다.

 

범주형 데이터의 정의

범주형 데이터는 ‘A’, ‘B’, ‘C’와 같이 종류를 표시하는 데이터를 말한다. 카테고리(category( 데이터라고도 부른다. 다음과 같은 데이터는 모두 범주형 데이터의 예다.

  • 성별: 남자, 여자

  • 혈액형: A, B, O, AB

  • 이름: 홍길동, 성춘향, …

  • 주소: 서울, 부산, 대전, …

반드시 문자만 범주형 데이터인 것은 아다. 예를 들어 소속을 나타내는 ‘1반’, ‘2반’, ‘3반’과 같은 데이터는 숫자로 표현된 값이지만 ‘1’이라는 글자를 이용한 것 뿐이지 숫자로서의 의미는 없다. 즉, ‘2’라는 값이 ‘1’이라는 값보다 2배 더 크다는 뜻이 아니므로 이 경우는 범주형 값으로 보아야 한다.

범주형 데이터의 변형

대부분의 데이터 분석 모형은 숫자만 입력으로 받을 수 있기 때문에 범주형 데이터는 숫자로 변환해야 한다. 범주형 데이터를 숫자로 변환하는 방법은 두가지다.

  • 더미변수화

  • 카테고리 임베딩

더미변수화

**더미변수(dummy variable)**는 0 또는 1만 가지는 값으로 어떤 특징이 존재하는가 존재하지 않는가를 표시한다. 다음과 같은 명칭으로도 불린다.

더미변수 전환

def get_dummies(df,dummy_list):

    if not dummy_list:
        return df
    
    else:
        df_ = pd.get_dummies(data=df, columns=dummy_list)
        
        return df_

 

 

더미변수 전환 되돌리기

def undummify(df, prefix_sep="_"):
    cols2collapse = {
        item.split(prefix_sep)[0]: (prefix_sep in item) for item in df.columns
    }
    series_list = []
    for col, needs_to_collapse in cols2collapse.items():
        if needs_to_collapse:
            undummified = (
                df.filter(like=col)
                .idxmax(axis=1)
                .apply(lambda x: x.split(prefix_sep, maxsplit=1)[1])
                .rename(col)
            )
            series_list.append(undummified)
        else:
            series_list.append(df[col])
    undummified_df = pd.concat(series_list, axis=1)
    return undummified_df

 

참고

datascienceschool.net/03%20machine%20learning/02.02%20%EB%B2%94%EC%A3%BC%ED%98%95%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%B2%98%EB%A6%AC.html

Comments