대학원 일기

전처리 기법: 원-핫 인코딩(One-Hot Encoding), 구간화(Data bining) 본문

AI/인공지능 기초

전처리 기법: 원-핫 인코딩(One-Hot Encoding), 구간화(Data bining)

대학원생(노예) 2023. 11. 12. 23:23

이전 포스팅인 '결측치: 정규화(Normalization)'를 이어서 작성합니다.

https://kys0411.tistory.com/177

 

전처리 기법: 정규화(Normalization)

이전 포스팅인 '전처리 기법: 이상치(Outlier)'를 이어서 작성합니다. https://kys0411.tistory.com/176 전처리 기법: 이상치(Outlier) 이전 포스팅인 '결측치: 중복 데이터'를 이어서 작성합니다. https://kys0411.ti

kys0411.tistory.com

 

원-핫 인코딩(One-Hot Encoding)

원 핫 인코딩은 머신러닝이나 딥러닝 프레임워크에서 범주형 데이터를 지원하지 않는 경우 사용한다. 이는 카테고리별 이진 특성을 만들어 해당하는 특성만 1, 나머지는 0으로 만드는 방법입니다.

 

이전 포스팅에서 사용한 trade 데이터셋을 사용하겠다. 

# trade 데이터의 국가명 컬럼 원본
print(trade['국가명'].head())

trade의 국가명 칼럼은 중국, 미국, 일본, 미국이 있는 것을 확인했다. 원 핫 인코딩은 pandas 라이브러리를 사용하여 쉽게 구현할 수 있다. pandas의  get_dummies의 함수를 통해 쉽게 할 수 있다.

# get_dummies를 통해 국가명 원-핫 인코딩
country = pd.get_dummies(trade['국가명'])
country.head()

 

이를 pandas의 concat 함수로 데이터 프레임 trade와 위에서 만든 country를 합쳐준다.

trade = pd.concat([trade, country], axis=1)
trade.head()

위 사진처럼 결과가 나온다. 원 핫 인코딩으로 범주형 데이터인 '국가명' 칼럼을 수치형 데이터로 바꾸었다. 마지막으로 기존에 있던 '국가명' 칼럼을 삭제해준다.

trade.drop(['국가명'], axis=1, inplace=True)
trade.head()

 

 

구간화(Data bining)

  • 히스토그램과 같이 연속적인 데이터를 구간을 나눠 분석할 때 사용하는 방법
  • 구간화(Data binning 혹은 bucketing )이라고 부릅니다.
  • pandas의 cutqcut 을 이용해 수치형 데이터를 범주형 데이터로 변형시키도록 하겠습니다.
  • cut 을 사용하기 위해 우선 구간을 지정
  • cut 함수에 데이터와 구간을 입력하면 데이터를 구간별로 나눠줍니다.
  • 구간별로 값이 몇 개가 속해 있는지 value_counts() 로 확인
  • 이렇게 특정 구간을 지정해 줘도 되고, 구간의 개수를 지정해 줄 수도 있습니다.
  • bins 옵션에 정수를 입력하면 데이터의 최솟값에서 최댓값을 균등하게 bins 개수만큼 나눠줍니다
  • qcut 은 구간을 일정하게 나누는 것이 아니라 데이터의 분포를 비슷한 크기의 그룹으로 나눠줍니다.

 

 

'AI > 인공지능 기초' 카테고리의 다른 글

딥러닝 들여다보기  (0) 2023.11.13
MLP(Multi Layer Perceptron) 과정  (1) 2023.11.13
전처리 기법: 정규화(Normalization)  (1) 2023.11.12
전처리 기법: 이상치(Outlier)  (1) 2023.11.12
전처리 기법: 중복 데이터  (0) 2023.11.11
Comments