首页 > 解决方案 > pandas_ml 坏了吗?

问题描述

版本信息和问题如下所示。我想知道 pandas_ml 是坏了还是我做错了什么。为什么我无法导入 pandas_ml?

基本信息:sklearn、pandas_ml 和 python 的版本如下:

Python                            3.8.2
scikit-learn                      0.23.0
pandas-ml                         0.6.1

问题:

import pandas_ml as pdml

返回以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-47-79d5f9d2381c> in <module>
----> 1 import pandas_ml as pdml
      2 #from pandas_ml import ModelFrame
      3 #mf = pdml.ModelFrame(df.to_dict())
      4 #mf.head()

d:\program files\python38\lib\site-packages\pandas_ml\__init__.py in <module>
      1 #!/usr/bin/env python
      2 
----> 3 from pandas_ml.core import ModelFrame, ModelSeries       # noqa
      4 from pandas_ml.tools import info                         # noqa
      5 from pandas_ml.version import version as __version__     # noqa

d:\program files\python38\lib\site-packages\pandas_ml\core\__init__.py in <module>
      1 #!/usr/bin/env python
      2 
----> 3 from pandas_ml.core.frame import ModelFrame       # noqa
      4 from pandas_ml.core.series import ModelSeries     # noqa

d:\program files\python38\lib\site-packages\pandas_ml\core\frame.py in <module>
      8 
      9 import pandas_ml.imbaccessors as imbaccessors
---> 10 import pandas_ml.skaccessors as skaccessors
     11 import pandas_ml.smaccessors as smaccessors
     12 import pandas_ml.snsaccessors as snsaccessors

d:\program files\python38\lib\site-packages\pandas_ml\skaccessors\__init__.py in <module>
     13 from pandas_ml.skaccessors.linear_model import LinearModelMethods                 # noqa
     14 from pandas_ml.skaccessors.manifold import ManifoldMethods                        # noqa
---> 15 from pandas_ml.skaccessors.metrics import MetricsMethods                          # noqa
     16 from pandas_ml.skaccessors.model_selection import ModelSelectionMethods           # noqa
     17 from pandas_ml.skaccessors.neighbors import NeighborsMethods                      # noqa

d:\program files\python38\lib\site-packages\pandas_ml\skaccessors\metrics.py in <module>
    254 _true_pred_methods = (_classification_methods + _regression_methods
    255                       + _cluster_methods)
--> 256 _attach_methods(MetricsMethods, _wrap_target_pred_func, _true_pred_methods)
    257 
    258 

d:\program files\python38\lib\site-packages\pandas_ml\core\accessor.py in _attach_methods(cls, wrap_func, methods)
     91 
     92         for method in methods:
---> 93             _f = getattr(module, method)
     94             if hasattr(cls, method):
     95                 raise ValueError("{0} already has '{1}' method".format(cls, method))

AttributeError: module 'sklearn.metrics' has no attribute 'jaccard_similarity_score'

标签: python-3.xscikit-learnpandas-ml

解决方案


看来确实如此。情况如下:

尽管该功能jaccard_similarity_score未在文档中的可用sklearn.metrics功能显示,但在 v0.22.2(源代码)之前它仍然存在(因此可用) jaccard_score。但是在最新的 v0.23的源代码中,它已经被删除了,只剩下了jaccard_score

这意味着仍然可以通过简单地将 scikit-learn 降级到 v.0.22.2 来使用 pandas-ml。但不幸的是,这也不起作用,引发不同的错误:

!pip install pandas-ml
# Successfully installed enum34-1.1.10 pandas-ml-0.6.1

import sklearn
sklearn.__version__
# '0.22.2.post1'

import pandas_ml as pdml

[...]

AttributeError: module 'sklearn.preprocessing' has no attribute 'Imputer'

我想只要回溯到足够多的时间(他们的Github 存储库中的最后一次提交是在 2019 年 3 月),就有可能找到一个可以使用它的 scikit-learn 版本,但不确定是否值得大惊小怪。无论如何,他们甚至在他们的需求文件中都没有提到 scikit-learn(更不用说它的任何特定版本) ,这似乎不是一个合理的做法,整个项目似乎都被放弃了。


推荐阅读