randomForest вибирає регресію замість класифікації


12

Я використовую пакет randomForest в R і використовую дані райдужки, випадковий ліс, що генерується, є класифікацією, але коли я використовую набір даних, що містить близько 700 функцій (функції мають кожен піксель у зображенні розміром 28x28 пікселів), і стовпець мітки називається label, randomForestгенерується регресія. Я використовую наступний рядок:

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

Як приходить регресія замість класифікації? Дані читаються наскрізь read.csv().

Відповіді:


10

randomForest за замовчуванням класифікувати або регресувати залежно від класу змінної. Тож якщо ви наберете

class(iris$Species)

ви побачите, що це фактор. 'label' у вашому коді, швидше за все, числовий, тому випадкові Найчастіше за замовчуванням до регресії. Вам потрібно буде перетворити його на коефіцієнт для класифікації. Ви можете його перетворити чи прочитати як фактор, встановивши colClasses у read.table.


4

Найчастіше це відбувається тому, що ви не сказали R, що мітка - категорична змінна. У read.csvфункції намагається вгадати , який тип використовувати для кожного стовпчика , і якщо він виглядає як числовий стовпець , то це те , що він буде використовувати. Ви можете перевірити, як R зберігає змінну за допомогою strфункції. Ви можете змусити read.csvчитати змінну як фактор (або числовий, або ...), використовуючи colClassesаргумент. Або ви можете змінити мітки на фактор, прочитавши їх за допомогою factorфункції.

Якщо це не так, то нам потрібна додаткова інформація про ваші дані. Результати запуску strу вашому кадрі даних, ймовірно, будуть корисні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.