Как я могу удалить случайность дерева решений на sklearn? - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать детерминированное дерево решений в Python, но у меня есть некоторые проблемы.

Если я запускаю сценарий 2 раза, я попадаю на разные деревья решений из-за random_state алгоритма.

Я пытался исправить random_state (random_state=0), но он все еще не работает.

Я бы хотел убрать случайность из моего дерева решений, но не могу найти четкого решения.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Аргумент random_state должен работать, но здесь есть 2 разных варианта

Опция 1:

from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators=1000, criterion='mse', min_samples_leaf=4, 
                           random_state= 0)

Этодолжен возвращать одни и те же результаты каждый раз.


Scikit-learn не использует свое собственное глобальное случайное состояние;всякий раз, когда экземпляр RandomState или целочисленное случайное начальное число не предоставляются в качестве аргумента, он опирается на случайное глобальное случайное состояние, которое можно установить с помощью numpy.random.seed


Вариант 2:

При этом добавление np.random.seed() до импорта RandomForestRegressor также должно подойтитрюк.

import numpy as np
np.random.seed(0)

Источник: http://scikit -learn.org / stable / faq.html # как сделать-я-установить-случайное-состояние-для-ан-все-исполнение

1 голос
/ 17 июня 2019

Sklearn использует случайное начальное число от numpy, поэтому вы можете установить глобальное начальное число в начале вашего скрипта с помощью:

import numpy as np

np.random.seed(0)
...