JavaScript

[Python] Segmentation

SangRok Jung 2022. 10. 6. 11:44
반응형

Segmentation (구간 분할)


  • 연속 변수를 일정한 구간으로 나누고, 각 구간을 범주형 이산 변수로 변환하는 과정. (binning)
  • Pandas cut() 함수를 이요하면 연속 데이터를 여러 구간으로 나누너 범주형 데이터로 변환할 수 있다.

 

  • 데이터 분석 알고리즘에 따라서는 연속 데이터를 그대로 사용하기 보다는 일정한 구간(bin)으로 나눠서 분석하는 것이 효율 적인 경우가 있다. 가격, 비용, 효율 등 연속적인 값을 일정한 수준이나 정도를 나타내는 이산적인 값으로 나타내어 구간별 차이를 드러내는 것이다.

 

 

 

 

 

 

 

 

▶ horsepower 컬럼의 결측치를 평균값으로 입력합니다.

# horsepower에 결측치를 제거 합니다.

# df_auto.horsepower.dropna(inplace=True, axis=0)
# df_auto.horsepower.isnull().sum()
# error isnull()이 적용이 안됨

df_auto.loc[df_auto.horsepower.isna(), 'horsepower'] = df_auto.horsepower.mean()

 

 

 

 

▶ horsepower의 구간을 3으로 나눕니다. (범위 설정)

# 수식으로 구현.
np.histogram(df_auto.horsepower, bins=3)

# (array([263, 103,  32]),
#  array([ 46.        , 107.33333333, 168.66666667, 230.        ]))

 

 

 

 

 

 

▶ 구간별의 이름을 리스트로 지정합니다.

# 구간별 이름 생성
bin_names = ['저출력', '보통출력', '고출력']

 

▶ hp_bin의 컬럼을 생성하여 각 구간의 horsepower의 값을 활용하여 구간별 이름을 입력합니다.

▷ pandas.cut() 함수 사용

# 새로운 구간별 컬럼을 생성하여
# horsepower의 값, 구간별 값, 구간별 이름으로 나누어 입력
df_auto['hp_bin'] = pd.cut(df_auto.horsepower, 
                           bin_dividers, 
                           labels=bin_names, 
                           include_lowest=True # 제일 작은 값을 포함 시킨다.
                          )

 

 

 

 

▶ hp_bin 컬럼의 데이터를 더미 변수로 변환합니다. (One-Hot encoding)

pd.get_dummies()
# get_dummies()

# pd.get_dummies(df_auto, columns=['hp_bin'])
pd.get_dummies(df_auto.hp_bin)

 

 

 

 

반응형