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 模型是否工作并产生与在另一个系统上相同的结果。
我还没有测试过这种方法,但我认为您应该尝试一下,如果可行请告诉我。干杯!!
我有一个 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 模型是否工作并产生与在另一个系统上相同的结果。
我还没有测试过这种方法,但我认为您应该尝试一下,如果可行请告诉我。干杯!!