2016-12-11 1 views
0

내 데이터 세트는 0에서 100까지의 연령대와 같이 계속 가변적이며 데이터에는 50 개의 클래스가있는 지역과 같은 카테고리 변수가 있습니다. 그래서 나는 continue 변수를 bin으로 처리 할 필요가 있는지 알지 못합니다. 그리고 주를 처리하는 가장 좋은 방법은 무엇입니까. Xgboost는 변수의 문자열 유형을 처리 할 수 ​​없습니다. 여러 유형의 주마다 한 번의 핫 인코딩을 사용해야합니까?xgboost에서 변수 및 범주 형 변수를 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

당신은 당신의 카테고리 factorize 수 IIUC :

In [1]: prv = pd.Series(['C','A','C','B','A'], dtype='category') 

In [2]: prv 
Out[2]: 
0 C 
1 A 
2 C 
3 B 
4 A 
dtype: category 
Categories (3, object): [A, B, C] 

In [3]: pd.factorize(prv)[0].astype(np.uint8) 
Out[3]: array([0, 1, 0, 2, 1], dtype=uint8) 

당신이 그들을 인수 분해하기 전에 범주를 정렬 할 경우 (즉, 'A'- 0, 'B'를 - 1 등) :

In [4]: pd.factorize(prv, sort=True)[0].astype(np.uint8) 
Out[4]: array([2, 0, 2, 1, 0], dtype=uint8) 

또는 당신은 숫자 카테고리를 변환 할 수 있습니다

In [12]: prv.cat.rename_categories(range(prv.nunique())) 
Out[12]: 
0 2 
1 0 
2 2 
3 1 
4 0 
dtype: category 
Categories (3, int64): [0, 1, 2] 
0

당신이해야 하나 뜨거운 인코딩 Y를 우리의 범주 적 가치.

일반적으로 XGBoost 및 GBM은 높은 차원의 카테고리에 어려움을 겪습니다.

이러한 경우 해당 범주 값을 사전 모델에 공급하면 xgboost