Вероятность случайного лесного классификатора имеет только значения 0, 0.1, 0.2... 1
Я пытаюсь использовать случайный лес для классификации моих данных, но когда я генерирую вероятность классификатора, она всегда имеет значение 0, 0.1, 0.2,... 1 в пределах 5 цифр. Это проблема статистики или проблема программного обеспечения? Я использую RandomForestClassifier в scikit-learn ensemble для Python 2.7.3 на Mac 10.7.5. Мои данные выглядят примерно так:
y x1 x2 x3 x4...
0 23 4 0
1 102 2 0
1 12 17 1
Переменная отклика y является двоичной. Есть 15 признаков, все они являются либо вещественными, либо целочисленными значениями, некоторые из которых являются двоичный. У меня около 2000 учебных баллов и 500 тестовых. Я установил число деревьев в 500, а число функций, которые нужно попробовать для каждого дерева, - в 8, а для всего остального использую значения по умолчанию. После обучения модели я генерирую вероятности с помощью функции "predict_proba" и получаю результаты, такие как 0.90000000000000002 или 0.10000000000000001
Я подумал, что эта проблема может быть вызвана определенной переменной, поэтому я обучил модель, используя только одну переменную за один раз, повторяемую над пятью переменными. Вероятности только для каждой переменной имеют нормальные значения, такие как 0,5532. Когда я использую две переменные вместе, несколько 0.70000 и т. д. начинают появляться значения. Когда я использую еще больше переменных, я получаю большую долю значений типа 0.700000.Это статистическая или программная проблема? Numpy прошел тест: numpy.test (), но scipy.test () и sklearn.тест () оба провалились. Я использовал пакеты sci-kit learn в прошлом, когда тесты не удавались без этой проблемы. Кроме того, я знаю, что должен исправьте пакеты, однако я потратил 20 часов на установку из исходного кода, затем двоичных пакетов, а затем прочитал более 30 веб-страниц о том, как другие люди установили его или какие ошибки у них были. Когда они говорят, что установка проста, я не вижу, чтобы они тестировали пакеты. Спасибо.
1 ответ:
По умолчанию число деревьев, построенных лесом решений склеарна, равно 10. Кажется возможным, что вы неправильно меняете это, как и в случае с ровно 10 деревьями в лесу, именно так будет выглядеть результат (вероятность-это доля деревьев, дающих класс 1, поэтому значения будут равны 0, .1, .2, ..., 1).
Можете ли вы проверить заданные параметры, чтобы увидеть, действительно ли он строит 500 деревьев?
>>> import sklearn.ensemble >>> rf = sklearn.ensemble.RandomForestRegressor() >>> rf.n_estimators 10 >>> rf = sklearn.ensemble.RandomForestRegressor(n_estimators=500) >>> rf.n_estimators 500