如何将训练有素的Naive Bayes分类器保存到磁盘并使用它来预测数据?
我从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()
Run Code Online (Sandbox Code Playgroud) 我正在尝试保存和加载 scikit-learn 模型,但当保存和加载发生在不同的 python 版本上时遇到问题。这是我尝试过的:
使用pickle在python3中保存模型并在python2中反序列化。这适用于某些模型,如LR、SVM,但不适用于KNN。
>>> pickle.load(open("inPy3.pkl", 'rb')) #KNN model
ValueError: non-string names in Numpy dtype unpickling
Run Code Online (Sandbox Code Playgroud)另外,我尝试使用 jsonpickle 在 json 中序列化和反序列化,但出现以下错误。
data = jsonpickle.encode(lr) #lr = logisticRegression Model
jsonpickle.decode(data)
AttributeError: 'dict' object has no attribute '__name__'
Run Code Online (Sandbox Code Playgroud)另外,我想知道是否有一些实用程序可以用来将 scikit-learn 模型对象序列化和反序列化为人类可读的格式(json、xml、protobuf 等)。
似乎有一些选项可以从scikit-learn中导出PMML模型,例如sklearn2pmml,但是在另一个方向上输入的信息要少得多.我的情况是先前在R中构建的XGboost模型,并使用r2pmml保存到PMML,我想在Python中使用它.Scikit通常使用pickle来保存/加载模型,但是也可以使用PMML将模型导入scikit-learn吗?