IPython ImportError:无法导入名称布局

IPython ImportError:无法导入名称布局,python,plot,ipython,catboost,Python,Plot,Ipython,Catboost,我正在尝试基于 在它的代码中,CatBoost在model.fit()中有plot,所以我想在我的IPython上试用它 以下是我的CatBoost代码: from catboost import CatBoostRegressor # indicate categorical features for CatBoost categorical_features_indices = np.where(X.dtypes != np.float)[0] model=CatBoostRegress

我正在尝试基于

在它的代码中,CatBoost在
model.fit()中有
plot
,所以我想在我的IPython上试用它

以下是我的CatBoost代码:

from catboost import CatBoostRegressor

# indicate categorical features for CatBoost
categorical_features_indices = np.where(X.dtypes != np.float)[0]

model=CatBoostRegressor(iterations=50, depth=3, learning_rate=0.1, 
loss_function='RMSE')
model.fit(X_train, y_train, 
cat_features=categorical_features_indices,
          use_best_model=True,
          eval_set=(X_validation, y_validation), plot=True)
但是,它不能显示任何情节,并不断给我错误:

我确实安装了ipywidgets和ipython。
你知道如何处理这个问题吗?

最后,我解决了这个问题,现在我可以看到这个图了

在我的例子中,解决方案是安装
Conda
并创建一个Conda虚拟环境,然后通过Conda安装
ipywidgets
。 让我在这里写下所有的细节,希望能有所帮助这可能只会帮助Mac用户

  • 在此处下载Conda:
  • 将conda添加到
    $PATH
  • 创建Conda虚拟环境
    Conda Create-n yourenvname python=x.x anaconda
  • 激活conda虚拟环境
    source激活您的环境名称
  • 在此虚拟环境中安装IPython笔记本(如果您已经使用python
    virtualenv
    并为此安装了IPython,则可以跳过此步骤):
    • (yourenvname)$pip安装jupyter
    • (yourenvname)$pip安装ipykernel
    • (yourenvname)$python-m ipykernel install--user--name testenv--display name“Python2(yourenvname)”
      ,如果您有多个ipykernel,这里的
      testenv
      也应该更改为另一个名称
  • 安装ipywidgets,
    (yourenvname)$conda安装ipywidgets--无deps
  • 安装catboost,
    (yourenvname)$pip安装catboost
  • 打开Jupyter Notebook,
    Jupyter Notebook
    并在
    Python2(yourenvname)
    下创建一个新笔记本,然后它就可以工作了
  • 注意:如果不起作用,请在第8步之前尝试以下操作:

    • pip安装widgetsnbextension
    • jupyter nbextension enable--py-widgetsnbextension--sys-prefix

    您是将ipython作为笔记本还是外壳运行?你是在虚拟环境中运行它吗?我把它当作笔记本运行。我尝试了虚拟环境和非虚拟环境,都得到了这个错误