我已閱讀https://towardsdatascience.com/random-seeds-and-reproducibility-933da79446e3以在 Python 中創建可重現的機器學習模型,您需要設定隨機種子并固定包版本。
我希望能夠在訓練后保存模型,即使用pickle.dump(),再次加載它們,然后得到相同的結果。
在https://docs.python.org/3/library/random.html#notes-on-reproducibility它說:
“有時,能夠重現由偽亂數生成器給出的序列很有用。通過重新使用種子值,只要多個執行緒沒有運行,相同的序列就應該可以在運行之間重現。”
我正在使用RandomForestClassifierwithjobs=-1所以我想知道我是否需要做更多,或者這是否已經在內部處理。
對于隨機種子,我現在有:
os.environ['PYTHONHASHSEED'] = str(42)
random.seed(42)
np.random.seed(42)
對于分類器,我正在設定隨機狀態:
rf = RandomForestClassifier(random_state=42)
uj5u.com熱心網友回復:
根據檔案,您還必須random_state在 RandomForestClassifier 中設定引數:
random_state:int,RandomState 實體或無,默認=無
控制構建樹時使用的樣本引導的隨機性(如果 bootstrap=True)和在每個節點尋找最佳分割時要考慮的特征采樣(如果 max_features < n_features)。有關詳細資訊,請參閱詞匯表。
例如:
from sklearn.ensemble import RandomForestClassifier
SEED = 42
clf = RandomForestClassifier(random_state = SEED)
澄清:
為了使實驗完全可重復,即使使用固定種子,也必須檢查資料集準備中的所有步驟(例如訓練和測驗拆分)。np.random.seed不保證 sklearn 的固定隨機狀態。我們需要設定與每個 sklearn 函式random_state對應的引數,以確保可重復性。
random_state在多執行緒中設定也足夠了。如果可能,請確保使用最新版本的 sklearn,以避免早期版本中可能出現的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533128.html
