randomForest choisit la régression au lieu de la classification

12

J'utilise le package randomForest dans R et j'utilise les données d'iris, la forêt aléatoire générée est une classification mais lorsque j'utilise un ensemble de données avec environ 700 entités (les entités sont chaque pixel dans une image de 28 x 28 pixels) et la colonne d'étiquette est nommée label, le randomForestgénéré est la régression. J'utilise la ligne suivante:

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

Comment se fait-il que la régression soit utilisée au lieu de la classification? Les données sont lues intégralement read.csv().

Décrochage scolaire
la source

Réponses:

10

randomForest utilisera par défaut la classification ou la régression selon la classe de la variable. Donc, si vous tapez

class(iris$Species)

vous verrez que c'est un facteur. 'label' dans votre code, est très probablement numérique, donc randomForest utilise par défaut la régression. Vous devrez le convertir en facteur de classification. Vous pouvez le convertir ou le lire en tant que facteur en définissant colClasses dans read.table.

julieth
la source
4

Le plus souvent, c'est parce que vous n'avez pas dit à R que l'étiquette est une variable catégorielle. La read.csvfonction essaie de deviner quel type utiliser pour chaque colonne et si elle ressemble à une colonne numérique, c'est ce qu'elle utilisera. Vous pouvez vérifier comment R stocke la variable à l'aide de la strfonction. Vous pouvez forcer la read.csvlecture de la variable en tant que facteur (ou numérique ou ...) en utilisant l' colClassesargument. Ou vous pouvez changer les étiquettes en facteur après l'avoir lu en utilisant la factorfonction.

Si ce n'est pas le cas, nous avons besoin de plus d'informations sur vos données. Les résultats de l'exécution strsur votre bloc de données seraient probablement utiles.

Greg Snow
la source