Sklearn 在不同系统(机器)上具有相同 random_state 的不同结果

Sklearn different results with the same random_state across different systems (machines)

我有一个 python 脚本,它使用 sklearn 随机森林生成预测并固定 random_state = 0。它在一台计算机(系统)上始终产生确定性结果,但是当我切换到另一台计算机时,结果不同。

有没有办法让它在不同系统中具有确定性?如何在不同的机器上像在第一台机器上一样得到相同的结果?

脚本又长又复杂,所以我不会分享代码,但我认为问题出在随机森林 random_state 因为当我尝试使用 KNN 而不是 RF 时,结果是相同的

sklearn.neighbors.KNeighborsClassifier uses all observations from your train data, while as the name suggests sklearn.ensemble.RandomForestClassifier 随机使用数据,因此每次迭代您都可以从随机森林中获得不同的结果。现在谈到在不同系统上使用它的问题,这是一个棘手的问题,但你可以尝试以下方法(虽然我还没有测试过)。

1).用一些 random_state 对您的数据拟合随机森林模型,比方说 random_state = 0

2).导入 pickle,创建一个 pickle 对象 rf.pkl,它将保存在您当前的工作目录中。

3).将当前的随机森林模型对象转储到泡菜对象中。

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

4).将 pickle 目标文件共享给另一个 user/system.

5).将 pickle 对象存储在某个位置并将其设置为工作目录。

6).在该系统上打开 Python,运行 您的 python 代码以读取数据。

7).不要创建新模型,而是使用以下代码行加载腌制模型:

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

8).测试您的 pickled 模型是否工作并产生与在另一个系统上相同的结果。

我还没有测试过这种方法,但我认为您应该尝试一下,如果可行请告诉我。干杯!!