pandas_ml是否损坏?

时间:2020-05-15 12:49:22

标签: python-3.x scikit-learn 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'

2 个答案:

答案 0 :(得分:3)

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

尽管documentationjaccard_similarity_score的可用sklearn.metrics中未显示功能jaccard_score,但直到v0.22.2({{ 3}})和source code之一。但是在jaccard_score的源代码中,它已被删除,仅剩下!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'

这意味着仅通过将scikit-learn降级到v.0.22.2,仍然可以使用pandas-ml。但不幸的是,这也不起作用,并抛出另一个错误:

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Row(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              width: 100,
              child: TextFormField(
                keyboardType: TextInputType.number,
                initialValue: "11",
                textAlign: TextAlign.center,
                decoration: InputDecoration(labelText: "Width"),
              ),
            ),
            Container(
              width: 100,
              child: TextFormField(
                keyboardType: TextInputType.number,
                initialValue: "22",
                textAlign: TextAlign.center,
                decoration: InputDecoration(labelText: "Height"),
              ),
            ),
          ],
        ),
      ),
    );
  }

我想可以通过充分回顾来找到一个适用于它的scikit学习版本(他们的latest v0.23中的最后一次提交是在2019年3月),但不确定是否值得大惊小怪。无论如何,他们甚至没有在他们的Github repo中提到scikit-learn(更不用说它的任何特定版本了),这似乎并不合理,整个项目似乎都被放弃了。

答案 1 :(得分:0)

因此,在为此花费了一些时间和精力之后,我开始工作了,并且意识到Python中的break概念相当模糊。这将取决于您尝试使用的库及其依赖项的组合。较早的版本都可用并且可以使用,但是有时,找到正确的软件包版本组合可以使一切正常运行,这是一个反复尝试的过程。

我从本练习中学到的另一件事是,在使用python进行编程时,拥有在创建和管理虚拟环境方面的专业知识的重要性。

在我的案例中,我从一些朋友的试用中得到了帮助,发现pandas_ml适用于python 3.7。以下给出的是pip freeze输出,可使用pandas_mlimbalanced-learn库之类的库来为机器学习和深度学习工作建立可靠的虚拟环境,其中可能还包括其他一些具有最近几年没有新版本。

要使用正确版本的软件包创建可确保pandas_mlimbalanced-learn库正常工作的工作环境,请在Python 3.7上创建具有以下配置的环境。

backcall==0.1.0
colorama==0.4.3
cycler==0.10.0
decorator==4.4.2
enum34==1.1.10
imbalanced-learn==0.4.3
ipykernel==5.2.1
ipython==7.14.0
ipython-genutils==0.2.0
jedi==0.17.0
joblib==0.15.0
jupyter-client==6.1.3
jupyter-core==4.6.3
kiwisolver==1.2.0
matplotlib==3.2.1
numpy==1.15.4
pandas==0.24.2
pandas-ml==0.6.1
parso==0.7.0
pickleshare==0.7.5
prompt-toolkit==3.0.5
Pygments==2.6.1
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2020.1
pywin32==227
pyzmq==19.0.1
scikit-learn==0.20.0
scipy==1.3.3
six==1.14.0
threadpoolctl==2.0.0
tornado==6.0.4
traitlets==4.3.3
wcwidth==0.1.9

希望这可以帮助正在寻找正确版本的库的人使用pandas_ml和不平衡学习包在python中设置其机器和深度学习环境。