Próbuję przewidzieć przy użyciu losowego modelu lasu w R.
Jednak dostaję błędy, ponieważ niektóre czynniki mają inne wartości w zestawie testowym niż w zestawie treningowym. Na przykład czynnik Cat_2
ma wartości 34, 68, 76
itp. W zestawie testowym, które nie pojawiają się w zestawie szkoleniowym. Niestety nie mam kontroli nad zestawem testowym ... muszę go używać tak, jak jest.
Moim jedynym obejściem było przekonwertowanie problematycznych czynników z powrotem na wartości liczbowe przy użyciu as.numeric()
. To działa , ale nie jestem bardzo zadowolony, ponieważ wartości te są kody, które nie mają sensu liczbowej ...
Czy uważasz, że byłoby inne rozwiązanie, aby usunąć nowe wartości z zestawu testowego? Ale bez usuwania wszystkich innych wartości czynników (powiedzmy wartości 1, 2, 14, 32
itp.), Które są zarówno w trakcie szkolenia, jak i testu, i zawierają informacje potencjalnie przydatne do prognoz.
źródło
Odpowiedzi:
Jeśli zestaw testowy ma wiele tych punktów z nowymi wartościami współczynników, nie jestem pewien, jakie jest najlepsze podejście. Jeśli jest to tylko garść punktów, być może uda ci się uciec od czegoś tak niepotrzebnego, jak potraktowanie błędnych poziomów czynników jako brakujących danych i przypisanie ich dowolnemu podejściu, które uznasz za stosowne. Implementacja R ma kilka sposobów przypisywania brakujących danych, wystarczy ustawić te poziomy czynników na NA, aby wskazać, że brakuje.
źródło
King i Bonoit , ten fragment kodu może być użyteczny do zharmonizowania poziomów:
Drukuje także, które atrybuty są zmieniane. Nie znalazłem dobrego sposobu na napisanie go bardziej elegancko (z płynnością czy coś takiego). Wszelkie wskazówki są mile widziane.
źródło
Oto kod, który napisałem, który adresuje odpowiedź @ King powyżej. Naprawiono błąd:
źródło
Zestaw testowy i treningowy należy połączyć jako jeden zestaw, a następnie zmienić poziomy zestawu treningowego. Moje kody to:
Działa to w każdym przypadku, gdy liczba poziomów w teście jest większa lub mniejsza niż szkolenie.
źródło
Mam kiepskie obejście, gdy używam randomForest w R. Prawdopodobnie nie jest to teoretycznie rozsądne, ale działa.
lub na odwrót. Zasadniczo daje po prostu powiedzieć R, że jest to poprawna wartość, tylko że istnieją 0 przypadków; więc przestań mnie denerwować z powodu błędu.
Nie jestem wystarczająco inteligentny, aby kodować go tak, aby automatycznie wykonywał akcję dla wszystkich funkcji jakościowych. Wyślij mi kod, jeśli wiesz jak ...
źródło
Jestem pewien, że pomyślałbyś o tym już, gdyby tak było, ale jeśli zestaw testowy ma rzeczywiste wartości i używasz zestawu testowego do celów krzyżowej weryfikacji, to ponownie dzieląc ramkę danych na szkoleniowe i testowe ramki danych gdy oba są zrównoważone na tych czynnikach, uniknąłby twojego problemu. Ta metoda jest powszechnie znana jako warstwowa walidacja krzyżowa .
źródło