【发布时间】:2016-02-08 03:28:50
【问题描述】:
我正在尝试对朴素贝叶斯估计器执行部分拟合,但也在部分拟合之前保留估计器的副本。 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))
我也可以每次都完全用新数据重新调整,但由于我需要执行数千次,所以我试图找到更有效的方法。
【问题讨论】:
-
你试过
copy或deepcopy吗?
标签: python python-3.x scikit-learn