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의 cut 과 qcut 을 이용해 수치형 데이터를 범주형 데이터로 변형시키도록 하겠습니다.
-
cut 을 사용하기 위해 우선 구간을 지정
-
cut 함수에 데이터와 구간을 입력하면 데이터를 구간별로 나눠줍니다.
-
구간별로 값이 몇 개가 속해 있는지 value_counts() 로 확인
-
이렇게 특정 구간을 지정해 줘도 되고, 구간의 개수를 지정해 줄 수도 있습니다.
-
bins 옵션에 정수를 입력하면 데이터의 최솟값에서 최댓값을 균등하게 bins 개수만큼 나눠줍니다
-
qcut 은 구간을 일정하게 나누는 것이 아니라 데이터의 분포를 비슷한 크기의 그룹으로 나눠줍니다.