Python:使用SVM时出现的Pickle错误

时间:2015-02-13 06:55:04

标签: python scikit-learn svm pickle

我正在尝试使用python中的pickle保存SVR模型。但是,在第一次尝试时,引发了一个ValueError:

ValueError: pickle protocol must be <= 2

我尝试通过显式传递参数来解决此错误:

s = pickle.dumps(w, open('svm.p', 'wb'), protocol=pickle.HIGHEST_PROTOCOL)

但我现在收到一个TypeError:

TypeError: dumps() got multiple values for keyword argument 'protocol'

据我所知,我的代码在与其他示例进行比较并阅读文档时很好,但我无法解决此错误。只要保存的模型可以跨工作站传输,我就会很乐意通过另一种方法保存模型。以下是相关代码:

import pickle

w = svm.SVR(kernel='rbf', C=1e6, gamma=0.00000008, max_iter=-1, cache_size=4096)
w.fit(X, Y)

s = pickle.dumps(w, open('svm.p', 'wb'), protocol=pickle.HIGHEST_PROTOCOL)

X和Y是长度为17520的向量,X具有每个元素的6个数据点的列表。例如。 X [0] = [0,1,6239.0,6709.375,6462.0,6774.75]和Y [0] = 6391.0

1 个答案:

答案 0 :(得分:1)

pickle.dumps没有取得文件参数。 pickle.dump呢。 解释器假设打开(&#39; svm.p&#39; wb&#39;)和protocol = pickle.HIGHEST_PROTOCOL作为协议版本传入,基于参数的顺序方法定义。

使用pickle.dump,因为它将写入svm.p文件。