我已经使用 scikit-learn
中的交叉验证和朴素贝叶斯分类器训练了一个模型。如何将这个模型保存下来,以便稍后对新实例运行?
这里是我的简单描述,我可以得到 CV
分数,但不知道如何访问已经训练好的模型。
gnb = GaussianNB()
scores = cross_validation.cross_val_score(gnb, data_numpy[0],data_numpy[1], cv=10)
我已经使用 scikit-learn
中的交叉验证和朴素贝叶斯分类器训练了一个模型。如何将这个模型保存下来,以便稍后对新实例运行?
这里是我的简单描述,我可以得到 CV
分数,但不知道如何访问已经训练好的模型。
gnb = GaussianNB()
scores = cross_validation.cross_val_score(gnb, data_numpy[0],data_numpy[1], cv=10)
cross_val_score不会更改您的估算器,也不会返回已拟合的估算器。它只返回交叉验证估算器的得分。
要拟合您的估算器-您应该显式地调用提供的数据集上的fit方法。要保存(序列化)它-可以使用pickle:
# To fit your estimator
gnb.fit(data_numpy[0], data_numpy[1])
# To serialize
import pickle
with open('our_estimator.pkl', 'wb') as fid:
pickle.dump(gnb, fid)
# To deserialize estimator later
with open('our_estimator.pkl', 'rb') as fid:
gnb = pickle.load(fid)
关于multioutput.RegressorChain()的内部机制,我可能会有所疏漏,但我相信您可以向RegressorChain提供相同的cv,并仅使用一个dv运行RegressorChain。
这将允许您按照您的意愿使用.predict()。