본문 바로가기
Deep Learning/딥러닝 기초

[hands-on-ml-2] 범주형 데이터 다루기

by 룰루셩 2020. 7. 25.

[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

댓글