Textual Categorical-Features
데이터의 분석방식은
데어터 셋이 순서자료인지 아니면 명목자료인지에 따라(ordinal or nominal) 분류된다.
ordinal
데이터가 순서자료일때는
증가형태의 정수를 설정하면된다.
만일 데이터가 설정된 정수형에 해당하지않는다면
'-1'로 표기될 것이다.
>>> import pandas as pd
>>> ordered_satisfaction = ['Very Unhappy', 'Unhappy', 'Neutral', 'Happy', 'Very Happy']
>>> df = pd.DataFrame({'satisfaction':['Mad', 'Happy', 'Unhappy', 'Neutral']})
>>> df.satisfaction = df.satisfaction.astype("category",
ordered=True,
categories=ordered_satisfaction
).cat.codes
>>> df
satisfaction
0 -1
1 3
2 1
3 2
이와반대로
nominal
데이터가 명목자료인경우 두가지 경우가 존재한다.
첫번째는 위와 같은 방식으로 진행하는 경우이다.
적은양의 데이터를 빠르게 분류하고 싶은 경우
다음 방식은 유용하다.
>>> df = pd.DataFrame({'vertebrates':[
... 'Bird',
... 'Bird',
... 'Mammal',
... 'Fish',
... 'Amphibian',
... 'Reptile',
... 'Mammal',
... ]})
# Method 1)
>>> df['vertebrates'] = df.vertebrates.astype("category").cat.codes
>>> df
vertebrates vertebrates
0 Bird 1
1 Bird 1
2 Mammal 3
3 Fish 2
4 Amphibian 0
5 Reptile 4
6 Mammal 3
물론 이러한 방식은 데이터 양이 커지면 반드시 문제가 생긴다.
따라서 이러한 문제를 방지하기위해서
다음과 같은
individual boolean features의 특징을 이용한다.
# Method 2)
>>> df = pd.get_dummies(df,columns=['vertebrates'])
>>> df
vertebrates_Amphibian vertebrates_Bird vertebrates_Fish \
0 0.0 1.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 1.0
4 1.0 0.0 0.0
5 0.0 0.0 0.0
6 0.0 0.0 0.0
vertebrates_Mammal vertebrates_Reptile
0 0.0 0.0
1 0.0 0.0
2 1.0 0.0
3 0.0 0.0
4 0.0 0.0
5 0.0 1.0
6 1.0 0.0
boolean features를 이용하여
0은 불포함, 1은 포함으로 표시가능하다.
Pandas .get_dummies() 방식은
single, nominal의 특징을 multiple, boolean 으로 변환시켜준다.
이는 Method #1에서의 에러를 해결해주는 강력한 방식이다.
'Code > Phyton' 카테고리의 다른 글
Matplotlib / Histogram / 2D & 3D Scatter Plots (0) | 2020.03.03 |
---|---|
Pure Textual Features /scikit-learn/countvectorize (0) | 2020.02.27 |
파이썬으로 공연예술 검색엔진 만들기 (별첨) (0) | 2019.12.28 |
파이썬으로 공연예술 검색엔진 만들기(3) (0) | 2019.12.28 |
파이썬으로 공연예술 검색엔진 만들기(2) (0) | 2019.12.28 |