Склеар разные результаты с одинаковым random_state в разных системах (машинах) - PullRequest
0 голосов
/ 11 марта 2020

У меня есть сценарий python, который генерирует прогнозы с использованием sklearn Random Forest и фиксированного random_state = 0. Он всегда дает детерминированные c результаты на одном компьютере (системе), но когда я переключаюсь на другой компьютер, результаты отличаются.

Есть ли способ сделать его детерминированным c в разных системах? Как сделать идентичные результаты на другой машине, как на первой машине?

Сценарий сложный и длинный, поэтому я не буду делиться кодом, но я думаю, что проблема в Random Forest random_state, потому что когда я пытался использовать KNN вместо RF, результаты были идентичны

1 Ответ

0 голосов
/ 12 марта 2020

sklearn.neighbors.KNeighborsClassifier использует все наблюдения из данных вашего поезда, в то время как, как следует из названия, sklearn.ensemble.RandomForestClassifier использует данные случайным образом, поэтому вы можете ожидать разные результаты от Random Forest на одну итерацию. Теперь перейдем к вопросу использования его в разных системах, это сложно, но вы можете попробовать следующий подход (хотя я еще не проверял это).

1). Подберите модель случайного леса для ваших данных с некоторыми значениями random_state, скажем random_state = 0

2). Импортируйте pickle, создайте объект rf.pkl, который будет сохранен в вашем текущем рабочем каталоге.

3). Дамп текущего объекта модели Random Forest в объект pickle.

import pickle    
pkl = 'rf.pkl'
with open(pkl,'wb') as file:
    pickle.dump(rf,file)

4). Передайте объектный файл pickle другому пользователю / системе.

5). Сохраните объект рассола в некотором месте и установите его в качестве рабочего каталога.

6). Откройте Python в этой системе, введите код python, чтобы прочитать данные.

7). Вместо создания новой модели загрузите протравленную модель, используя следующие строки кода:

with open(pkl,'rb') as file:
    pkl_model = pickle.load(file)

8). Проверьте, работает ли ваша протравленная модель и дает те же результаты, что и в другой системе.

Я не проверял этот подход, но я думаю, что вы должны попробовать это и сообщить мне, если это работает. Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...