[hands-on-ml-2] 범주형 데이터 다루기
핸즈온 머신러닝2 ch2에서 다룬 내용입니다.
ocean_proximity는 범주형 특성을 가지고 있습니다.
대부분의 머신러닝 알고리즘은 숫자를 다루므로 이 카테고리를 텍스트에서 숫자로 변환해야 합니다.
housing_cat=housing["ocean_proximity"]
housing_cat.head()
텍스트에서 숫자로 변환 (OrdinalEncoder)
1) pandas의 Series.factorize() 매서드 이용
housing_cat_encoded, housing_categories=housing_cat.factorize()
print(housing_cat_encoded[:10])
print(housing_categories)
2) 사이킷런의 OrdinalEncoder 클래스를 이용
housing_cat = housing[["ocean_proximity"]] # OrdinalEncoder 사용할 때는 이렇게 [[]]로 해주어야 오류가 안난다.
from sklearn.preprocessing import OrdinalEncoder
ordinal_encoder = OrdinalEncoder()
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat)
housing_cat_encoded[:10]
ordinal_encoder.categories_
더미변수로 바꿔주기 (OneHotEncoder)
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
housing_cat_1hot = encoder.fit_transform(housing_cat_encoded.reshape(-1, 1))
housing_cat_1hot
<16512x5 sparse matrix of type '<class 'numpy.float64'>'
with 16512 stored elements in Compressed Sparse Row format>
넘파이 배열로 바꾸려면 toarray() 메서드를 호출하면 된다.
housing_cat_1hot.toarray()
cat_encoder.categories_
'Deep Learning > 딥러닝 기초' 카테고리의 다른 글
[패캠] Autoencoders (0) | 2021.12.14 |
---|---|
[패캠] Dimension Reduction (1) | 2021.11.03 |
[Hands-on-ml-2] 모델 평가 (0) | 2020.07.30 |
[모두를 위한 머신러닝/딥러닝] ML (0) | 2020.07.09 |
댓글