我正在尝试运行一些带有语音 WAV 分段的演示示例。
from pyAudioAnalysis import audioSegmentation as aS
[flagsInd, classesAll, acc, CM] = aS.mtFileClassification("diarizationExample.wav",
"svmSM", "svm", True, 'dar.segments.txt')
我得到的错误:
C:\Users\Kenzhegaliyev_EK\AppData\Local
\Continuum\anaconda3\lib\site-packages\sklearn\base.py:318:
UserWarning:
Trying to unpickle estimator SVC from version 0.19.1
when using version 0.22.1. This might lead
to breaking code or invalid results. Use at your own risk.
UserWarning)
这是一些旧的 sklearn 的 svc 估计器。
我该如何解决?卸载sklearn并安装0.19.1版本?
很抱歉回答晚了,但由于这个问题在许多代码中仍然活跃,所以我写了答案希望这样它会对某人有所帮助。
使用时尝试从版本 0.19.1 中取消估算器 SVC 版本0.22.1.
错误很明显,它告诉您在创建 pickle 文件时,它是使用版本 0.19.1 创建的,但您现在正在从不同版本(0.22.1)解码 pickle 文件。
所以警告很明确,代码可能会损坏或者某些东西当然无法工作。
要解决该问题,您有 2 个选项之一
选项1 从相同版本创建 pickle 文件。例如。如果在不同的机器上创建,那么你必须升级到最新的 scikit-learn
选项2 在解码 pickle 文件的机器中,将 scikit-learn 降级到警告中提到的版本,例如在你的情况下0.19.1 您可以使用 pip 命令来执行此操作
pip install scikit-learn==0.19.1 #python 2
pip3 install scikit-learn==0.19.1 #python 3
该命令将自动删除以前的版本并安装指定的新版本。
Pickle 是 Python 对象的标准序列化格式,但它不安全,因为它可以运行任意代码。
如 scikit-learn 文档中所述,
pickle
以及扩展的 joblib
存在安全性和可维护性问题。即使成功,对此类数据执行的操作也可能会导致不同的和意外的结果。
Scikit-learn 建议使用 skops,这是一个更安全的 Python 库来共享基于 scikit-learn 的模型。 API 也类似于
pickle
。