randomForest wählt Regression statt Klassifikation

12

Ich verwende das randomForest- Paket in R und verwende die Iris-Daten. Die generierte zufällige Gesamtstruktur ist eine Klassifizierung. Wenn ich jedoch einen Datensatz mit ca. 700 Features verwende (die Features sind jeweils Pixel in einem 28 x 28 Pixel großen Bild), wird die Beschriftungsspalte benannt labelist die randomForesterzeugte Regression. Ich benutze die folgende Zeile:

rf <- randomForest(label ~ ., data=train)

Wie kommt es, dass Regression anstelle von Klassifizierung verwendet wird? Die Daten werden durchgelesen read.csv().

Schulabbrecher
quelle

Antworten:

10

randomForest verwendet standardmäßig die Klassifizierung oder Regression, abhängig von der Klasse der Variablen. Also, wenn Sie tippen

class(iris$Species)

Sie werden sehen, dass es ein Faktor ist. 'label' in Ihrem Code ist höchstwahrscheinlich numerisch, daher verwendet randomForest standardmäßig die Regression. Sie müssen es in einen Faktor für die Klassifizierung umwandeln. Sie können es konvertieren oder als Faktor einlesen, indem Sie colClasses in read.table setzen.

julieth
quelle
4

In den meisten Fällen liegt dies daran, dass Sie R nicht mitgeteilt haben, dass label eine kategoriale Variable ist. Die read.csvFunktion versucht zu erraten, welcher Typ für jede Spalte verwendet werden soll, und wenn es wie eine numerische Spalte aussieht, wird diese verwendet. Mit der strFunktion können Sie überprüfen, wie R die Variable speichert . read.csvMit dem colClassesArgument können Sie erzwingen , dass die Variable als Faktor (oder numerisch oder ...) gelesen wird . Oder Sie können die Beschriftung in einen Faktor ändern, nachdem Sie sie mit der factorFunktion eingelesen haben.

Ist dies nicht der Fall, benötigen wir weitere Informationen zu Ihren Daten. Die Ergebnisse der Ausführung strin Ihrem Datenrahmen wären wahrscheinlich nützlich.

Greg Snow
quelle