fabsig / GPBoost

Combining tree-boosting with Gaussian process and mixed effects models
Other
571 stars 46 forks source link

module 'pdpbox.pdp' has no attribute 'pdp_isolate' #101

Closed raheems closed 1 year ago

raheems commented 1 year ago

I am running the Python example provided at https://github.com/fabsig/GPBoost/blob/master/examples/python-guide/GPBoost_algorithm_blog_post_example.py

It raises an error shown below.

Is there a way to fix it?

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
File <command-824805917799902>:91
     89 from pdpbox import pdp
     90 # Single variable plots (takes a few seconds to compute)
---> 91 pdp_dist = pdp.pdp_isolate(model=bst, dataset=X_train, model_features=X_train.columns,
     92                            feature='variable_2', num_grid_points=50,
     93                            predict_kwds={"ignore_gp_model": True})
     94 pdp.pdp_plot(pdp_dist, 'variable_2', plot_lines=True)
     95 # Two variable interaction plot

AttributeError: module 'pdpbox.pdp' has no attribute 'pdp_isolate'

I am running it on a databricks cluster. The output of pip freeze is below

absl-py==1.0.0
alabaster==0.7.13
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
astor==0.8.1
asttokens==2.0.5
astunparse==1.6.3
attrs==21.4.0
autograd==1.6.2
autograd-gamma==0.5.0
azure-core==1.26.3
azure-cosmos==4.2.0
Babel==2.12.1
backcall==0.2.0
backports.entry-points-selectable==1.2.0
bcrypt==3.2.0
beautifulsoup4==4.11.1
black==22.3.0
bleach==4.1.0
blis==0.7.9
boto3==1.21.32
botocore==1.24.32
bounded-pool-executor==0.0.3
cachetools==4.2.2
catalogue==2.0.8
category-encoders==2.5.1.post0
certifi==2021.10.8
cffi==1.15.0
chardet==4.0.0
charset-normalizer==2.0.4
click==8.0.4
cloudpickle==2.0.0
cmdstanpy==1.1.0
confection==0.0.4
configparser==5.2.0
contourpy==1.1.0
convertdate==2.4.0
cryptography==3.4.8
cycler==0.11.0
cymem==2.0.7
Cython==0.29.28
databricks-automl-runtime==0.2.15
databricks-cli==0.17.4
databricks-feature-store==0.10.1
dbl-tempo==0.1.12
dbus-python==1.2.16
debugpy==1.5.1
decorator==5.1.1
defusedxml==0.7.1
dill==0.3.4
diskcache==5.4.0
distlib==0.3.6
distro==1.4.0
distro-info===0.23ubuntu1
docstring-to-markdown==0.11
docutils==0.18.1
entrypoints==0.4
ephem==4.1.4
exceptiongroup==1.1.1
executing==0.8.3
facets-overview==1.0.0
fastjsonschema==2.16.2
fasttext==0.9.2
filelock==3.6.0
Flask==1.1.2
flatbuffers==23.1.21
fonttools==4.25.0
formulaic==0.6.3
fsspec==2022.2.0
future==0.18.2
gast==0.4.0
gitdb==4.0.10
GitPython==3.1.27
google-auth==1.33.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
gpboost==1.2.1.1
grpcio==1.42.0
gunicorn==20.1.0
gviz-api==1.10.0
h5py==3.6.0
hijri-converter==2.2.4
holidays==0.18
horovod==0.27.0
htmlmin==0.1.12
huggingface-hub==0.12.0
idna==3.3
ImageHash==4.3.1
imagesize==1.4.1
imbalanced-learn==0.10.1
importlib-metadata==4.11.3
importlib-resources==5.12.0
iniconfig==2.0.0
interface-meta==1.3.0
ipykernel==6.15.3
ipython==8.5.0
ipython-genutils==0.2.0
ipywidgets==7.7.2
isodate==0.6.1
itsdangerous==2.0.1
jedi==0.18.1
Jinja2==3.1.2
jmespath==0.10.0
joblib==1.1.1
joblibspark==0.5.1
jsonschema==4.4.0
jupyter-client==6.1.12
jupyter_core==4.11.2
jupyterlab-pygments==0.1.2
jupyterlab-widgets==1.0.0
keras==2.11.0
kiwisolver==1.3.2
korean-lunar-calendar==0.3.1
langcodes==3.3.0
libclang==15.0.6.1
lifelines==0.27.7
lightgbm==3.3.4
llvmlite==0.38.0
LunarCalendar==0.0.9
Mako==1.2.0
Markdown==3.3.4
MarkupSafe==2.0.1
matplotlib==3.7.1
matplotlib-inline==0.1.2
mccabe==0.7.0
mistune==0.8.4
mleap==0.20.0
mlflow-skinny==2.1.1
multimethod==1.9.1
murmurhash==1.0.9
mypy-extensions==0.4.3
nbclient==0.5.13
nbconvert==6.4.4
nbformat==5.3.0
nest-asyncio==1.5.5
networkx==2.7.1
nltk==3.7
nodeenv==1.7.0
notebook==6.4.8
numba==0.55.1
numpy==1.21.5
numpydoc==1.5.0
oauthlib==3.2.0
opt-einsum==3.3.0
packaging==21.3
pandas==2.0.3
pandas-profiling==3.6.2
pandocfilters==1.5.0
paramiko==2.9.2
parso==0.8.3
pathspec==0.9.0
pathy==0.10.1
patsy==0.5.2
PDPbox==0.3.0
petastorm==0.12.1
pexpect==4.8.0
phik==0.12.3
pickleshare==0.7.5
Pillow==9.0.1
platformdirs==2.6.2
plotly==5.15.0
pluggy==1.0.0
pmdarima==2.0.2
pqdm==0.2.0
preshed==3.0.8
prometheus-client==0.13.1
prompt-toolkit==3.0.20
prophet==1.1.1
protobuf==3.19.4
psutil==5.9.5
psycopg2==2.9.3
ptyprocess==0.7.0
pure-eval==0.2.2
pyarrow==7.0.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pybind11==2.10.3
pycparser==2.21
pydantic==1.10.2
pyflakes==2.5.0
Pygments==2.15.1
PyGObject==3.36.0
PyJWT==2.6.0
PyMeeus==0.5.12
PyNaCl==1.5.0
pyodbc==4.0.32
pyparsing==3.0.4
pyright==1.1.283
pyrsistent==0.18.0
pytest==7.4.0
python-apt==2.0.1+ubuntu0.20.4.1
python-dateutil==2.8.2
python-editor==1.0.4
python-lsp-jsonrpc==1.0.0
python-lsp-server==1.6.0
pytz==2021.3
PyWavelets==1.3.0
PyYAML==6.0
pyzmq==22.3.0
regex==2022.3.15
requests==2.27.1
requests-oauthlib==1.3.1
requests-unixsocket==0.2.0
rope==0.22.0
rsa==4.7.2
s3transfer==0.5.0
scikit-learn==1.0.2
scipy==1.7.3
seaborn==0.11.2
Send2Trash==1.8.0
setuptools-git==1.2
shap==0.41.0
simplejson==3.17.6
six==1.16.0
slicer==0.0.7
smart-open==5.2.1
smmap==5.0.0
snowballstemmer==2.2.0
soupsieve==2.3.1
spacy==3.4.4
spacy-legacy==3.0.12
spacy-loggers==1.0.4
spark-tensorflow-distributor==1.0.0
Sphinx==6.2.1
sphinx-rtd-theme==1.2.2
sphinxcontrib-applehelp==1.0.4
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.1
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
sqlparse==0.4.2
srsly==2.4.5
ssh-import-id==5.10
stack-data==0.2.0
statsmodels==0.13.2
tabulate==0.8.9
tangled-up-in-unicode==0.2.0
tenacity==8.0.1
tensorboard==2.11.2
tensorboard-data-server==0.6.1
tensorboard-plugin-profile==2.11.1
tensorboard-plugin-wit==1.8.1
tensorflow-cpu==2.11.0
tensorflow-estimator==2.11.0
tensorflow-io-gcs-filesystem==0.30.0
termcolor==2.2.0
terminado==0.13.1
testpath==0.5.0
thinc==8.1.7
threadpoolctl==2.2.0
tokenize-rt==4.2.1
tokenizers==0.13.2
tomli==1.2.2
torch==1.13.1+cpu
torchvision==0.14.1+cpu
tornado==6.1
tqdm==4.65.0
traitlets==5.1.1
transformers==4.25.1
typeguard==2.13.3
typer==0.7.0
typing_extensions==4.7.0
tzdata==2023.3
ujson==5.1.0
unattended-upgrades==0.1
urllib3==1.26.9
virtualenv==20.8.0
visions==0.7.5
wasabi==0.10.1
wcwidth==0.2.5
webencodings==0.5.1
websocket-client==0.58.0
Werkzeug==2.0.3
whatthepatch==1.0.4
widgetsnbextension==3.6.1
wrapt==1.12.1
xgboost==1.7.2
yapf==0.31.0
zipp==3.7.0
fabsig commented 1 year ago

I cannot reproduce this problem. Anyway, this seems like a problem of pdpbox and not gpboost. I suggest you open an issue at PDPbox (although there is already one: https://github.com/SauceCat/PDPbox/issues/61).

Alternatively, you might try doing this with the scikit-learn API; see https://stackoverflow.com/questions/68444662/python-error-when-importing-pdp-get-dataset-info-plots-from-pdpbox

raheems commented 1 year ago

What version of pdpbox are you using?

fabsig commented 1 year ago

That's the reason! I was using version 0.2.1 of pdpbox and, apparently, the interface changed in a non-backwards compatible way with the new version 0.3.0. I update the demo code. It should work now.

Thanks for mentioning this!

raheems commented 1 year ago

Thank you, professor! Much appreciated :)