python - 我是否可以使用 .pkl 文件,即使它给我一个 DepreciationWarning?

标签 python python-3.x k-means python-3.7

我正在研究其他人的文档不足的代码(它使用 tf-idf 来查找文档集群),我遇到了这个:

from sklearn.externals import joblib

#joblib.dump(km,  'doc_cluster.pkl')
km = joblib.load('doc_cluster.pkl')
clusters = km.labels_.tolist()

它应该解开 doc_cluster.pkl,但当我运行它时,我收到一个 DepreciationWarning,指出该文件是使用低于 0.10 的 joblib 版本生成的,它要求我重新生成该文件。但是,我不能那样做,因为我没有创建 doc_cluster.pkl。那么继续前进并忽略警告是否可以,否则会把事情搞砸吗?

最佳答案

弃用警告只是警告,加载成功。 pickle 文件仍在加载和支持,至少在这个版本的 sklearn 中(它捆绑了第三方 joblib project )。 joblib 的 future 版本可能会停止支持该特定格式,但这还没有发生。

您可以使用当前版本重新创建 pickle 文件,只需将相同的对象转储回磁盘即可:

km = joblib.load('doc_cluster.pkl')
joblib.dump(km, 'doc_cluster.pkl', compress=True)

另见 joblib persistence documentation .

或者,您可以通过使用警告过滤器来抑制警告。您可以在 PYTHONWARNINGS environment variable 中设置过滤器, 与 -W command-lne switch (我会使用字符串 ignore::DeprecationWarning:sklearn.externals.joblib),或者使用 warnings module直接:

import warnings
warnings.filterwarnings(
    "ignore", category=DeprecationWarning,
    module=r'sklearn\.externals\.joblib'
)

关于python - 我是否可以使用 .pkl 文件,即使它给我一个 DepreciationWarning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54369082/

相关文章:

Python - ip <-> 子网匹配?

python - 如果满足条件,如何只调用列表中的字典值?

go - 如何使用go保存聚类模型?

nlp - 如何使用 k-means (Flann with python) 对文档进行聚类?

python-3.x - Selenium WebDriverWait 在网络抓取时在 Python 上返回错误

python - 为 kmeans scikit 堆叠 3 个变量

python urllib2 计时

python - 在Python中反序列化Prometheus `remote_write` Protobuf输出

Python3 pip3 安装在 Ubuntu 上损坏

python - Grpc 服务器扩展(双向无限流)