LabelEncoder new class 대처하기
2020. 1. 4. 21:54ㆍ분석 Python/Scikit Learn (싸이킷런)
labelencoder를 사용하다 보면, new class에 대체하는 방법이 필요하다.
추가적인 클래스로 학습하기 어려운 이유는 뉴럴 네트워크 아키텍처를 학습시킬 때 추가 클래스 없을 때의 인코딩 값이 변하기 때문이다.
그러므로 여기서 대처 방법은 새로운 클래스 같은 경우 적은 클래스일 수 있으니 결측 클래스로 넣는 방법으로 진행한다. (만약 많다면, 다시 학습을 해야 할 필요성이 있을 것이다.)
from sklearn.preprocessing import LabelEncoder
import numpy as np
le = LabelEncoder()
a = ["paris", "paris", "tokyo", "amsterdam"] + [np.nan]
le.fit(a)
le.classes_
여기에 새로운 클래스가 2개 더 생겼다고 해보자.
이때 나머지 클래스에 대해서는 결측으로 바꿔준다.
test= ["paris", "paris", "tokyo", "amsterdam"] + ["ho", "h02", np.nan]
change_test= [np.nan if not i in le.classes_ else i for i in test ]
le.transform(a)
out = le.transform(change_test)
out
그래서 새로운 클래스를 결측으로 바꿔서 인코딩 값으로 1로 사용한다.
728x90
'분석 Python > Scikit Learn (싸이킷런)' 카테고리의 다른 글
sklearn을 활용한 Custom Outlier Transformer 만들어보기 (0) | 2020.02.24 |
---|---|
[ Python ] sklearn_pandas 로 정형데이터 전처리하기(Preprocessing) (0) | 2020.01.19 |
[ Python ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5 (0) | 2019.12.28 |
[ Python ] scikit-learn RandomTreesEmbedding (0) | 2019.12.21 |
[ Python ] scikit-learn feature selection Tool (2) | 2019.12.21 |