Ich muss die Genauigkeit eines Trainingsdatensatzes durch Anwendung des Random Forest-Algorithmus ermitteln. Aber der Typ meines Datensatzes ist sowohl kategorisch als auch numerisch. Beim Versuch, diese Daten anzupassen, wird eine Fehlermeldung angezeigt.
'Eingabe enthält NaN, unendlich oder einen Wert, der für dtype zu groß ist (' float32 ')'.
Möglicherweise liegt das Problem bei Objektdatentypen. Wie kann ich kategoriale Daten anpassen, ohne sie für die Anwendung von RF zu transformieren?
Hier ist mein Code.
python
data-mining
random-forest
IS2057
quelle
quelle
Antworten:
Sie müssen die kategorialen Features in numerische Attribute konvertieren. Ein üblicher Ansatz ist die Verwendung einer One-Hot-Codierung, aber das ist definitiv nicht die einzige Option. Wenn Sie eine Variable mit einer hohen Anzahl von kategorialen Ebenen haben, sollten Sie in Betracht ziehen, Ebenen zu kombinieren oder den Hashing-Trick zu verwenden. Sklearn ist mit mehreren Ansätzen ausgestattet (siehe Abschnitt "Siehe auch"): Ein Hot Encoder und ein Hashing Trick
Wenn Sie sich nicht für sklearn engagieren, werden bei der Implementierung der zufälligen H2O- Gesamtstruktur kategoriale Funktionen direkt verarbeitet.
quelle
Soweit ich weiß, gibt es einige Probleme, diese Art von Fehler zu bekommen. Erstens gibt es in meinen Datensätzen zusätzlichen Speicherplatz, weshalb Fehler angezeigt werden: 'Eingabe enthält NAN-Wert; Zweitens kann Python mit keinem Objektwert arbeiten. Wir müssen diesen Objektwert in einen numerischen Wert konvertieren. Für die Konvertierung von Objekten in numerische Objekte gibt es zwei Codierungsverfahren: Label Encoder und One Hot Encoder. Wo Label Encoder Objektwerte zwischen 0 und n_classes-1 und One Hot Encoder zwischen 0 und 1 codieren. In meiner Arbeit verwende ich Label Encoder zum Konvertieren von Werten und vor dem Konvertieren, bevor ich meine Daten für eine beliebige Klassifizierungsmethode anpasse In meinem Datensatz ist kein Leerzeichen vorhanden.
quelle