【问题标题】:How to upgrade the classifier to the latest version of scikit-learn如何将分类器升级到最新版本的 scikit-learn
【发布时间】:2017-04-01 14:31:06
【问题描述】:

我有一个训练有素的大型 TfidfVectorizer 与 joblib.dump 一起转储。 它是在我的笔记本电脑上使用 scikit-learn 0.18 版创建的。当我试图将它放到安装了最新版本 scikit-learn 0.18.1 的服务器上时,我收到以下警告:

/usr/local/lib/python2.7/dist-packages/sklearn/base.py:315: UserWarning: Trying to unpickle estimator TfidfTransformer from version 0.18 when using version 0.18.1. This might lead to breaking code or invalid results. Use at your own risk.
  UserWarning)
/usr/local/lib/python2.7/dist-packages/sklearn/base.py:315: UserWarning: Trying to unpickle estimator TfidfVectorizer from version 0.18 when using version 0.18.1. This might lead to breaking code or invalid results. Use at your own risk.
  UserWarning) 

是否有一种自然的方法可以升级我的 TfidfVectorizer 以防止出现任何问题?

我应该最好卸载 scikit-learn 0.18.1 并将 0.18 版本安装到服务器上吗?

【问题讨论】:

  • 我认为没有迁移工具。如果您想安全起见,请尽可能使用相同或更好的版本:升级并重新安装。如果您有时间,请检查版本之间关于序列化分类器的源代码更改,您可能会推断出可能的后果。

标签: python scikit-learn


【解决方案1】:

This 链接为您提供有关如何升级的说明。

pip install -U scikit-learn

上面的命令应该将你当前的 scikit 版本升级到最新版本。根据您使用 tfidf 矢量化器所做的事情,您可能有问题,也可能没有问题;我建议随时更新新版本。因此,您最好确保您的服务器和计算机都运行最新的 sci-kit。

【讨论】:

  • 谢谢,但这并不能解决我的问题。我已经在一个巨大的 12Gb 语料库上训练了 tfidf 矢量化器。我的整个项目都依赖于它,因此让它在没有任何错误的情况下正常工作至关重要。我宁愿继续使用旧版本的 scikit-learn,也不愿使用最新版本获得不可预测的结果。有链接如何指定要安装的版本吗?
  • @ArtemNepo 检查 python 文档。类似于pip install scikit-learn=0.18(删除后)
  • @sascha 谢谢。 pip install scikit-learn==0.18 解决了我的问题。例如,我将等待 0.19 版进行重大升级,然后我将重新安装我的矢量化器,但此时我更愿意坚持使用 0.18
  • @sascha 是的,我误解了这个问题。道歉。
【解决方案2】:

是的,您应该在服务器上安装与用于开发的版本相同的版本,最佳做法是使用requirements.txt 来满足项目的所有要求,并使用conda 或@987654323 在您的服务器上安装新环境@,这样可以省去手动设置这些东西的麻烦。

【讨论】:

    【解决方案3】:

    您应该能够通过首先将 sklearn 更新到最新版本,然后使用 joblib.load 加载腌制对象并使用 joblib.dump 转储它来规避这个问题。完成此操作后,我不再收到警告。

    【讨论】:

    • 我也这样做了,但我不确定这是正确的解决方案。如果 unpickling 不可靠,则此迁移是不安全的。我想真正的修复是这样的:用旧版本解压并保存为安全格式(csv,npy)。现在更新版本,加载数据并使用新版本重新序列化。
    【解决方案4】:

    只需卸载并重新安装最新的 Scikit(或升级到最新版本)。 然后再次训练模型,这将生成一个新的 joblib 模型。这肯定会奏效。

    【讨论】:

      【解决方案5】:

      您应该安装项目使用的 scikit 版本。

      首先卸载 scikit:

      pip uninstall scikit-learn
      

      然后像这样安装正确的版本:

      pip install -v scikit-learn==0.18
      

      【讨论】:

        猜你喜欢
        • 2016-02-23
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 2012-04-21
        相关资源
        最近更新 更多