Python错误,无法在Spark上导入名称Imputer(Bluemix)

时间:2016-03-31 11:43:00

标签: python apache-spark ibm-cloud spyder

我有一个问题我在spark上写了我的脚本,当我运行脚本时我遇到了导入问题,但我不明白为什么,因为当我在本地通过spyder运行相同的脚本时,我不会&#39 ;得到这个错误。 那为什么我会收到这个错误?是Bluemix有问题吗?

脚本:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn import preprocessing
from sklearn.preprocessing import Imputer
from sklearn.metrics import roc_auc_score

我的错误是:

<ipython-input-2-13d49864f8d7> in <module>()
     66 from sklearn import preprocessing
     67 #from sklearn.preprocessing import Imputer
---> 68 from sklearn.metrics import roc_auc_score


ImportError: cannot import name roc_auc_score

or 

from sklearn.ensemble import RandomForestClassifier
      4 import sklearn.preprocessing as p
----> 5 from sklearn.preprocessing import Imputer
      6 #import sklearn.metrics as sm
      7 from sklearn.metrics import roc_auc_score

ImportError: cannot import name Impute

4 个答案:

答案 0 :(得分:3)

解决方法是在用户site-packages中安装较新版本的scikit-learn,并从系统site-packages中导出该版本而不是scikit-learn 0.11

1。)安装较新版本的scikit-learn(忽略输出“Successfully installed scikit-learn-0.11”):

!pip install --user --upgrade scikit-learn

2.)显示用户名:

!whoami

3.。)在系统站点包的路径前设置用户站点包的路径。使用步骤2中的用户名作为变量USER_NAME:

import sys
sys.path.insert(0,"/gpfs/fs01/user/USER_NAME/.local/lib/python2.7/site-packages")

4.)检查scikit-learn版本:

import sklearn
sklearn.__version__

以下代码应在前面的步骤之后运行:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn import preprocessing
from sklearn.preprocessing import Imputer
from sklearn.metrics import roc_auc_score

重新启动内核后,必须再次执行第3步,才能从用户site-packages导入更新版本的scikit-learn

答案 1 :(得分:1)

scikit_learn的版本0.11(预装在Bluemix笔记本中)Imputer中没有preprocessing。因此ImportError

在Bluemix笔记本中,您可以在Environment标签的右侧栏中找到该库的版本。

答案 2 :(得分:0)

所以我不得不使用

from sklearn.impute import SimpleImputer 
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')

代替

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)

否则,会出现以下错误。

from sklearn.preprocessing import Imputer
ImportError: cannot import name 'Imputer' from 'sklearn.preprocessing'

答案 3 :(得分:0)

在juypter笔记本中,它工作正常

from sklearn.impute import SimpleImputer 
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')