2017-09-27 13 views
-1

파이썬에서 xgboost를 사용하여 회귀 문제를 해결하려고합니다. 하지만 문제가 발생했습니다. 나는 그것을 여러 곳에서 찾았지만 구체적인 결과를 얻을 수 없었다.python xgboost에서 많은 수의 다른 값을 갖는 숫자 형 변수를 처리하는 방법은 무엇입니까?

저는 음식 수집가 비즈니스 모델을 가지고 있습니다. 내 플랫폼의 사용자는 여러 레스토랑에서 주문할 수 있습니다.

회귀 모델을 사용하여 사용자가 배치 한 주문 (앱에 표시)을 예상하도록 ETA를 예측하고 싶습니다. 내 training model의 기능으로 "restaurant_id"를 사용하려고합니다. 하지만 이제 문제는 내 플랫폼에 100 개가 넘는 레스토랑이 있습니다. 그리고 나는 그것을 숫자 기능으로 사용할 수 없다. 나는 그것을 범주 적 특징으로 사용해야한다. 이 사건을 어떻게 처리할까요? 즉 다양한 가치가있는 범주 형 기능을 처리하는 방법은 무엇입니까?

저는 파이썬에서 Xgboost를 사용하고 있습니다. 나는 판다의 get_dummies 함수를 사용했다. 나는 이런 식으로할지 아니면 다른 접근법을 따르 느냐에 대해서는 확신 할 수 없다. 어떤 제안이 도움이 될 것입니다.

미리 감사드립니다.

+0

XGBoost를 사용하여 ETA를 예측 하시겠습니까? –

+0

@ AmeyYadav 나는 어떤 algo도 사용할 수 있지만 xgboost만이 아닙니다. 그러나 아이디어는 문제를 해결하는 방법입니다. – user3457384

답변

0

Sckit learn은 이러한 종류의 작업을 처리하는 좋은 수업을 가지고 있습니다. 당신의 경우 LabelBinarizer가 당신을 위해 하나의 핫 인코딩을 할 수 있습니다 !! here 더 찾기 , 그 대답은 당신이 언급 한대로 restaurant_id가하는 범주 기능입니다으로

0

get_dummies()와 귀하의 접근 방식은, 나에게 확인을 소리 도움이 될 수 있습니다. 랜덤 포리스트와 xgboost와 같은 비 파라 메트릭 트리 기반 방법을 사용하면 restaurant_id을 숫자 정수로 사용하려고 시도 할 수도 있지만 대개 여전히 좋은 성능을 얻습니다 (여기 오글 리셀의 답변 https://github.com/scikit-learn/scikit-learn/issues/5442 참조).

수천 개의 카테고리가있는 경우 특히 유용하며 get_dummies()은 거대한 매트릭스를 생성합니다.

0

피쳐 해싱 (a.k.a 해싱 트릭)을 사용하여 큰 카테고리 기능을 나타낼 수 있습니다. 그것은 Onehotencoding과 동일하지만, 형성되는 드문 드문 행렬은 차원이 낮습니다. 따라서 시간과 메모리면에서 효율적입니다.