簡體   English   中英

有沒有辦法知道哪個 sklearn 版本用於訓練泡菜 model?

[英]Is there a way to know which sklearn version was used to train a pickle model?

我得到了一個帶有經過訓練的梯度提升 model 的泡菜文件,該文件是由其他人在另一台機器上訓練的。 我意識到我無法在我的機器上加載這個泡菜文件

with open('gb_model.pickle','rb') as f:
    gbmodel = pickle.load(f)

我當前版本的scikit-learn==0.24.2 我收到錯誤ModuleNotFoundError: No module named 'sklearn.ensemble.gradient_boosting' 然后我嘗試安裝其他版本的sklearn但我不斷收到與sklearn相關的其他錯誤。 我也嘗試使用joblib但得到相同的結果:

from joblib import load
clf = load('gb_model.pickle')

我意識到我需要使用與安裝時相同的sklearn版本加載腌制文件。 我在這里看到可以在加載后檢查版本,但似乎我什至無法加載泡菜文件。 還有另一種方法嗎? 我希望最終能夠加載腌制的 model。 根據官方文檔,理想情況下應該沿着腌制的model保存元數據,但我沒有提供這個,有沒有辦法單獨從腌制文件中獲取這個?

如果您使用 sklearn 版本 0.18 或更高版本訓練 model,請嘗試:

import pickle
clf = pickle.load(open('gb_model.pickle', 'rb'))
clf.__getstate__()['_sklearn_version']

但是,在sklearn.ensemble中實際上沒有名為gradient_boosting的模塊,這就是導致問題的原因。 最接近的模塊是sklearn.ensemble.GradientBoostingClassifier ,或者來自 OpenML 的這個模塊(我從未聽說過)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM