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