임의 포리스트 분류에 범주 형 데이터 유형을 맞추려면 어떻게해야합니까?


12

Random Forest Algorithm을 적용하여 훈련 데이터 세트의 정확성을 찾아야합니다. 그러나 내 데이터 세트 유형은 범주 및 숫자입니다. 해당 데이터를 맞추려고 할 때 오류가 발생합니다.

'입력에 NaN, 무한대 또는 dtype ('float32 ')에 비해 너무 큰 값이 있습니다.'

개체 데이터 형식에 문제가있을 수 있습니다. RF 적용을 위해 변환하지 않고 범주 형 데이터를 맞추려면 어떻게해야합니까?

여기 내 코드가 있습니다.

스크린 샷

스크린 샷

스크린 샷


트리 모델을 사용하는 경우 다른 방법처럼 거리를 측정하지 않으므로 one_hot을 수행 할 필요가 없습니다.
Jun Yang

1
@JunYang, scikit-learn은 현재 인코딩 범주를 요구합니다.
Ben Reiniger

답변:


11

범주 기능을 숫자 속성으로 변환해야합니다. 일반적인 접근 방식은 one-hot 인코딩을 사용하는 것이지만 이것이 유일한 옵션은 아닙니다. 범주 레벨이 많은 변수가있는 경우 레벨 결합 또는 해싱 트릭 사용을 고려해야합니다. Sklearn은 여러 가지 접근 방식을 갖추고 있습니다 ( "참조"섹션 참조) : 하나의 핫 인코더해싱 트릭

sklearn을하지 않으면 h2o 랜덤 포레스트 구현은 범주 형 기능을 직접 처리합니다.


0

내가 아는 한이 유형의 오류를 얻는 데 약간의 문제가 있습니다. 첫 번째는 내 데이터 세트에 'Input Contains NAN value; 둘째, 파이썬은 어떤 유형의 객체 값에서도 작동하지 않습니다. 이 객체 값을 숫자 값으로 변환해야합니다. 객체를 숫자로 변환하기 위해 두 가지 유형의 인코딩 프로세스가 있습니다 : 라벨 인코더와 하나의 핫 인코더. 레이블 엔코더가 0에서 n_classes-1 사이의 객체 값을 인코딩하고 하나의 핫 엔코더가 0과 1 사이의 값을 인코딩하는 경우 내 작업에서 모든 유형의 분류 방법에 대한 데이터를 맞추기 전에 값을 변환하고 변환하기 전에 레이블 인코더를 사용합니다. 내 데이터 세트에 빈 공간이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.