Muszę znaleźć dokładność zestawu danych szkoleniowych, stosując algorytm losowego lasu. Ale mój typ mojego zestawu danych jest zarówno kategoryczny, jak i numeryczny. Kiedy próbowałem dopasować te dane, pojawia się błąd.
„Dane wejściowe zawierają NaN, nieskończoność lub wartość zbyt dużą dla dtype („ float32 ”)”.
Problem może dotyczyć typów danych obiektowych. Jak dopasować dane kategoryczne bez przekształcania w celu zastosowania RF?
Oto mój kod.
python
data-mining
random-forest
IS2057
źródło
źródło
Odpowiedzi:
Musisz przekonwertować cechy jakościowe na atrybuty numeryczne. Powszechnym podejściem jest stosowanie kodowania „na gorąco”, ale to zdecydowanie nie jedyna opcja. Jeśli masz zmienną z dużą liczbą poziomów jakościowych, powinieneś rozważyć połączenie poziomów lub użycie sztuczki haszującej. Sklearn jest wyposażony w kilka podejść (sprawdź sekcję „patrz także”): Jeden gorący enkoder i sztuczka haszująca
Jeśli nie jesteś zaangażowany w sklearn, losowa implementacja lasu H2O obsługuje funkcje jakościowe bezpośrednio.
źródło
O ile wiem, istnieje pewien problem z uzyskaniem tego rodzaju błędów. Po pierwsze, w moich zestawach danych istnieje dodatkowa przestrzeń, przez którą pokazywany jest błąd: „Dane wejściowe zawierają wartość NAN; Po drugie, python nie jest w stanie współpracować z żadnym typem wartości obiektu. Musimy przekonwertować tę wartość obiektu na wartość liczbową. Do konwersji obiektu na numeryczny istnieje proces kodowania dwóch typów: koder etykiet i jeden gorący koder. W przypadku, gdy koder etykiet koduje wartość obiektu od 0 do n_klasy-1 i Jeden gorący koder koduje wartość od 0 do 1. W mojej pracy, przed dopasowaniem moich danych do dowolnej metody klasyfikacji, używam enkodera etykiet do konwersji wartości i przed konwersją upewniam się, że w moim zestawie danych nie ma pustej przestrzeni.
źródło