尝试在使用版本 0.22.1 时从版本 0.19.1 中取消估算器 SVC 错误

问题描述 投票:0回答:2

我正在尝试运行一些带有语音 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版本?

environment-variables version
2个回答
2
投票

很抱歉回答晚了,但由于这个问题在许多代码中仍然活跃,所以我写了答案希望这样它会对某人有所帮助。

使用时尝试从版本 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

该命令将自动删除以前的版本并安装指定的新版本。


0
投票

Pickle 是 Python 对象的标准序列化格式,但它不安全,因为它可以运行任意代码。

scikit-learn 文档中所述,

pickle
以及扩展的
joblib
存在安全性和可维护性问题。即使成功,对此类数据执行的操作也可能会导致不同的和意外的结果。

Scikit-learn 建议使用 skops,这是一个更安全的 Python 库来共享基于 scikit-learn 的模型。 API 也类似于

pickle

© www.soinside.com 2019 - 2024. All rights reserved.