gpt4 book ai didi

python - 如何克隆包含其数据的 scikit-learn 估算器?

转载 作者:太空狗 更新时间:2023-10-30 02:43:22 24 4
gpt4 key购买 nike

我正在尝试对朴素贝叶斯估计器执行部分拟合,但也在部分拟合之前保留估计器的副本。 sklearn.base.clone 只克隆一个估计参数,而不是它的数据,所以在这种情况下没有用。对克隆执行部分拟合仅使用在部分拟合期间添加的数据,因为克隆实际上是空的。

from sklearn.naive_bayes import MultinomialNB

model = MultinomialNB()
fit_model = model.fit(np.array(X),np.array(y))
fit_model2 = model.partial_fit = (np.array(Z),np.array(w)),np.unique(y))

在上面的例子中,fit_model 和 fit_model2 是相同的,因为它们都指向同一个对象。我想保留原件不变。我的解决方法是腌制原始对象并将其加载到新对象中以执行部分​​拟合。像这样:

model = MultinomialNB()
fit_model = model.fit(np.array(X),np.array(y))

import pickle
with open('saved_model', 'wb') as f:
pickle.dump([model], f)

with open('saved_model', 'rb') as f:
[model2] = pickle.load(f)

fit_model2 = model2.partial_fit(np.array(Z),np.array(w)),np.unique(y))

此外,我每次都可以使用新数据完全重新调整,但由于我需要执行此操作数千次,所以我正在努力寻找更高效的方法。

最佳答案

  1. model.fit() 返回模型本身(同一个对象)。所以您不必将它分配给不同的变量,因为它只是别名。

  2. 您可以使用 deepcopy 以类似于加载腌制对象的方式复制对象。

所以如果你做这样的事情:

from copy import deepcopy

model = MultinomialNB()
model.fit(np.array(X), np.array(y))

model2 = deepcopy(model)

model2.partial_fit(np.array(Z),np.array(w)), np.unique(y))
# ...

model2 将是一个不同的对象,具有 model 的复制参数,包括“已训练”参数。

关于python - 如何克隆包含其数据的 scikit-learn 估算器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com