Labo-Lacourse / stepmix

A Python package following the scikit-learn API for model-based clustering and generalized mixture modeling (latent class/profile analysis) of continuous and categorical data. StepMix handles missing values through Full Information Maximum Likelihood (FIML) and provides multiple stepwise Expectation-Maximization (EM) estimation methods.
https://stepmix.readthedocs.io/en/latest/index.html
MIT License
54 stars 4 forks source link

Version issue - gives an error in the 0.3.0 version #14

Closed sivsiv7 closed 1 year ago

sivsiv7 commented 1 year ago

Hi there, We run StepMix with 0.2.0 and it works, but with 0.3.0 we get an error. Your quickstart sample gives the same error. `from stepmix.datasets import data_bakk_response from stepmix.stepmix import StepMix

Soft 3-step

X, Y, _ = data_bakk_response(n_samples=1000, sep_level=.9, random_state=42) model = StepMix(n_components=3, n_steps=3, measurement='bernoulli', structural='gaussian_unit', assignment='soft', random_state=42) model.fit(X, Y) print(model.score(X, Y)) # Average log-likelihood --------------------------------------------------------------------------- TypeError Traceback (most recent call last)

in 6 model = StepMix(n_components=3, n_steps=3, measurement='bernoulli', structural='gaussian_unit', assignment='soft', 7 random_state=42) ----> 8 model.fit(X, Y) 9 print(model.score(X, Y)) # Average log-likelihood ~\Anaconda3\lib\site-packages\stepmix\stepmix.py in fit(self, X, Y, sample_weight, y) 608 # Three-step estimation 609 # 1) Fit the measurement model --> 610 self.em(X, sample_weight=sample_weight) 611 # 2) Assign class probabilities 612 soft_resp = self.predict_proba(X) ~\Anaconda3\lib\site-packages\stepmix\stepmix.py in em(self, X, Y, sample_weight, freeze_measurement, log_emission_pm) 734 # and check length 735 # Otherwise set them to 1 for all examples --> 736 sample_weight = _check_sample_weight(sample_weight, X, dtype=X.dtype, copy=True) 737 738 if n_samples < self.n_components: TypeError: _check_sample_weight() got an unexpected keyword argument 'copy' `
sachaMorin commented 1 year ago

Hello, I just reinstalled 0.3.0 from scratch and the quickstart example runs fine. Can you share the output of pip list or conda list in your environment? This looks like a dependency version issue.

sivsiv7 commented 1 year ago

Hi, thank you for your fast response. My output of pip list package Version


alabaster 0.7.12 anaconda-client 1.7.2 anaconda-navigator 1.10.0 anaconda-project 0.8.3 argh 0.26.2 argon2-cffi 20.1.0 asn1crypto 1.4.0 astroid 2.4.2 astropy 4.0.2 async-generator 1.10 atomicwrites 1.4.0 attrs 20.3.0 autopep8 1.5.4 Babel 2.8.1 backcall 0.2.0 backports.functools-lru-cache 1.6.1 backports.shutil-get-terminal-size 1.0.0 backports.tempfile 1.0 backports.weakref 1.0.post1 bcrypt 3.2.0 beautifulsoup4 4.9.3 bitarray 1.6.1 bkcharts 0.2 bleach 3.2.1 bokeh 2.2.3 boto 2.49.0 Bottleneck 1.3.2 brotlipy 0.7.0 certifi 2020.6.20 cffi 1.14.3 cfgv 3.3.1 chardet 3.0.4 click 7.1.2 cloudpickle 1.6.0 clyent 1.2.2 colorama 0.4.4 comtypes 1.1.7 conda 4.9.2 conda-build 3.20.5 conda-package-handling 1.7.2 conda-verify 3.4.2 contextlib2 0.6.0.post1 cryptography 3.1.1 cycler 0.10.0 Cython 0.29.21 cytoolz 0.11.0 dask 2.30.0 decorator 4.4.2 defusedxml 0.6.0 diff-match-patch 20200713 distlib 0.3.6 distributed 2.30.1 docutils 0.16 entrypoints 0.3 et-xmlfile 1.0.1 factor-analyzer 0.4.1 fastcache 1.1.0 filelock 3.8.0 flake8 3.8.4 Flask 1.1.2 fsspec 0.8.3 future 0.18.2 gevent 20.9.0 glob2 0.7 greenlet 0.4.17 h5py 2.10.0 HeapDict 1.0.1 html5lib 1.1 identify 2.5.8 idna 2.10 imageio 2.9.0 imagesize 1.2.0 importlib-metadata 2.0.0 iniconfig 1.1.1 intervaltree 3.1.0 ipykernel 5.3.4 ipython 7.19.0 ipython-genutils 0.2.0 ipywidgets 7.5.1 isort 5.6.4 itsdangerous 1.1.0 jdcal 1.4.1 jedi 0.17.1 Jinja2 2.11.2 joblib 0.17.0 json5 0.9.5 jsonschema 3.2.0 jupyter 1.0.0 jupyter-client 6.1.7 jupyter-console 6.2.0 jupyter-core 4.6.3 jupyterlab 2.2.6 jupyterlab-pygments 0.1.2 jupyterlab-server 1.2.0 jupyterthemes 0.20.0 keyring 21.4.0 kiwisolver 1.3.0 lazy-object-proxy 1.4.3 lesscpy 0.15.1 libarchive-c 2.9 llvmlite 0.34.0 locket 0.2.0 lxml 4.6.1 MarkupSafe 1.1.1 matplotlib 3.3.2 mccabe 0.6.1 menuinst 1.4.16 mistune 0.8.4 mkl-fft 1.2.0 mkl-random 1.1.1 mkl-service 2.3.0 mock 4.0.2 more-itertools 8.6.0 mpmath 1.1.0 msgpack 1.0.0 multipledispatch 0.6.0 navigator-updater 0.2.1 nbclient 0.5.1 nbconvert 6.0.7 nbformat 5.0.8 nest-asyncio 1.4.2 networkx 2.5 nltk 3.5 nodeenv 1.7.0 nose 1.3.7 notebook 6.1.4 numba 0.51.2 numexpr 2.7.1 numpy 1.19.2 numpydoc 1.1.0 olefile 0.46 openpyxl 3.0.5 packaging 20.4 pandas 1.1.3 pandocfilters 1.4.3 paramiko 2.7.2 parso 0.7.0 partd 1.1.0 path 15.0.0 pathlib2 2.3.5 pathtools 0.1.2 patsy 0.5.1 pep8 1.7.1 pexpect 4.8.0 pickleshare 0.7.5 Pillow 8.0.1 pip 20.2.4 pkginfo 1.6.1 platformdirs 2.5.2 plotly 5.11.0 pluggy 0.13.1 ply 3.11 pre-commit 2.20.0 prometheus-client 0.8.0 prompt-toolkit 3.0.8 psutil 5.7.2 py 1.9.0 pycodestyle 2.6.0 pycosat 0.6.3 pycparser 2.20 pycurl 7.43.0.6 pydocstyle 5.1.1 pydotplus 2.0.2 pyflakes 2.2.0 Pygments 2.7.2 pylint 2.6.0 PyNaCl 1.4.0 pyodbc 4.0.0-unsupported pyOpenSSL 19.1.0 pyparsing 2.4.7 pyreadline 2.1 pyrsistent 0.17.3 PySocks 1.7.1 pytest 0.0.0 python-dateutil 2.8.1 python-jsonrpc-server 0.4.0 python-language-server 0.35.1 pytz 2020.1 PyWavelets 1.1.1 pywin32 227 pywin32-ctypes 0.2.0 pywinpty 0.5.7 PyYAML 5.3.1 pyzmq 19.0.2 QDarkStyle 2.8.1 QtAwesome 1.0.1 qtconsole 4.7.7 QtPy 1.9.0 regex 2020.10.15 requests 2.24.0 rope 0.18.0 Rtree 0.9.4 ruamel-yaml 0.15.87 scikit-image 0.17.2 scikit-learn 0.23.2 scipy 1.5.2 seaborn 0.11.0 Send2Trash 1.5.0 setuptools 50.3.1.post20201107 simplegeneric 0.8.1 singledispatch 3.4.0.3 sip 4.19.13 six 1.15.0 snowballstemmer 2.0.0 sortedcollections 1.2.1 sortedcontainers 2.2.2 soupsieve 2.0.1 Sphinx 3.2.1 sphinxcontrib-applehelp 1.0.2 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 1.0.3 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.4 sphinxcontrib-websupport 1.2.4 spyder 4.1.5 spyder-kernels 1.9.4 SQLAlchemy 1.3.20 statsmodels 0.12.0 stepmix 0.3.0 sympy 1.6.2 tables 3.6.1 tblib 1.7.0 tenacity 8.1.0 terminado 0.9.1 testpath 0.4.4 threadpoolctl 2.1.0 tifffile 2020.10.1 toml 0.10.1 toolz 0.11.1 tornado 6.2 tqdm 4.50.2 traitlets 5.0.5 typing-extensions 3.7.4.3 ujson 4.0.1 unicodecsv 0.14.1 urllib3 1.25.11 virtualenv 20.16.6 watchdog 0.10.3 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 1.0.1 wheel 0.35.1 widgetsnbextension 3.5.1 win-inet-pton 1.1.0 win-unicode-console 0.5 wincertstore 0.2 wrapt 1.11.2 xlrd 1.2.0 XlsxWriter 1.3.7 xlwings 0.20.8 xlwt 1.3.0 xmltodict 0.12.0 yapf 0.30.0 zict 2.0.0 zipp 3.4.0 zope.event 4.5.0 zope.interface 5.1.2

sachaMorin commented 1 year ago

Can you try pip install --upgrade scikit-learn and rerun the example?

sivsiv7 commented 1 year ago

Thank you! it is working now

sachaMorin commented 1 year ago

Awesome. Will add a specific scikit-learn version requirement for future release.