python - 在 scikit-learn 中将分类器保存到磁盘

如何将经过训练的朴素贝叶斯分类器保存到磁盘并用它来预测数据?

我有以下来自 scikit-learn 网站的示例程序:

from sklearn import datasets
iris = datasets.load_iris()
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
print "Number of mislabeled points : %d" % (iris.target != y_pred).sum()

最佳答案

分类器只是可以像其他任何东西一样被腌制和倾倒的对象。继续你的例子:

import cPickle
# save the classifier
with open('my_dumped_classifier.pkl', 'wb') as fid:
    cPickle.dump(gnb, fid)    

# load it again
with open('my_dumped_classifier.pkl', 'rb') as fid:
    gnb_loaded = cPickle.load(fid)

编辑:如果您使用的是 sklearn Pipeline在其中您有无法通过 pickle (也不能通过 joblib )序列化的自定义转换器,然后使用 Neuraxle 的 custom ML Pipeline saving是一种解决方案,您可以在其中定义自己的自定义 step savers在每一步的基础上。如果在保存时定义了保存程序,则每个步骤都会调用保存程序,否则将使用 joblib 作为没有保存程序的步骤的默认值。

https://stackoverflow.com/questions/10592605/

相关文章:

python - 更改 pandas DataFrame 中的特定列名

linux - 移动除一个以外的所有文件

linux - 当程序具有命令行参数时,如何使用 GDB 分析程序的核心转储文件?

python - 为什么元组可以包含可变项?

python - Django CSRF 检查因 Ajax POST 请求而失败

python - 如何检查有效的电子邮件地址?

linux - 您可以将 Amazon EBS 附加到多个实例吗?

linux - 从文件列表中获取输入的 Tar 归档

python - 迭代模板中的模型实例字段名称和值

regex - 如何使用 wget 下载整个目录和子目录?