Python:使用 SVM 时出现 Pickle 错误

Python: Pickle error with SVM usage

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

ValueError: pickle protocol must be <= 2

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

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

但我现在收到类型错误:

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

pickle.dumps 不接受文件参数。 pickle.dump 确实如此。 解释器假设 open('svm.p', 'wb') 和 protocol=pickle.HIGHEST_PROTOCOL 都作为协议版本传入,基于方法定义中参数的顺序。

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