Commit d1002776 authored by Nikita Titov's avatar Nikita Titov Committed by Guolin Ke
Browse files

specify the last supported version of scikit-learn (#2637)

parent d9690dd6
...@@ -30,7 +30,7 @@ install: ...@@ -30,7 +30,7 @@ install:
- activate - activate
- conda config --set always_yes yes --set changeps1 no - conda config --set always_yes yes --set changeps1 no
- conda update -q -y conda - conda update -q -y conda
- conda create -q -y -n test-env python=%PYTHON_VERSION% joblib matplotlib numpy pandas psutil pytest python-graphviz scikit-learn scipy - conda create -q -y -n test-env python=%PYTHON_VERSION% joblib matplotlib numpy pandas psutil pytest python-graphviz "scikit-learn<=0.21.3" scipy
- activate test-env - activate test-env
build_script: build_script:
......
...@@ -83,7 +83,7 @@ if [[ $TASK == "r-package" ]]; then ...@@ -83,7 +83,7 @@ if [[ $TASK == "r-package" ]]; then
exit 0 exit 0
fi fi
conda install -q -y -n $CONDA_ENV joblib matplotlib numpy pandas psutil pytest python-graphviz scikit-learn scipy conda install -q -y -n $CONDA_ENV joblib matplotlib numpy pandas psutil pytest python-graphviz "scikit-learn<=0.21.3" scipy
if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then
# fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL)
......
...@@ -132,7 +132,7 @@ jobs: ...@@ -132,7 +132,7 @@ jobs:
- powershell: Write-Host "##vso[task.prependpath]$env:CONDA\Scripts" - powershell: Write-Host "##vso[task.prependpath]$env:CONDA\Scripts"
displayName: Enable conda displayName: Enable conda
- script: | - script: |
cmd /c "activate & conda config --set always_yes yes --set changeps1 no & conda update -q -y conda & conda create -q -y -n %CONDA_ENV% python=%PYTHON_VERSION% joblib matplotlib numpy pandas psutil pytest python-graphviz scikit-learn scipy" cmd /c 'activate & conda config --set always_yes yes --set changeps1 no & conda update -q -y conda & conda create -q -y -n %CONDA_ENV% python=%PYTHON_VERSION% joblib matplotlib numpy pandas psutil pytest python-graphviz "scikit-learn<=0.21.3" scipy'
cmd /c "activate %CONDA_ENV% & powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/test_windows.ps1" cmd /c "activate %CONDA_ENV% & powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/test_windows.ps1"
displayName: Test displayName: Test
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
......
...@@ -18,7 +18,7 @@ RUN apt-get update && \ ...@@ -18,7 +18,7 @@ RUN apt-get update && \
export PATH="$CONDA_DIR/bin:$PATH" && \ export PATH="$CONDA_DIR/bin:$PATH" && \
conda config --set always_yes yes --set changeps1 no && \ conda config --set always_yes yes --set changeps1 no && \
# lightgbm # lightgbm
conda install -q -y numpy scipy scikit-learn pandas && \ conda install -q -y numpy scipy "scikit-learn<=0.21.3" pandas && \
git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \ git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \
cd LightGBM/python-package && python setup.py install && \ cd LightGBM/python-package && python setup.py install && \
# clean # clean
......
...@@ -75,8 +75,8 @@ RUN echo "export PATH=$CONDA_DIR/bin:"'$PATH' > /etc/profile.d/conda.sh && \ ...@@ -75,8 +75,8 @@ RUN echo "export PATH=$CONDA_DIR/bin:"'$PATH' > /etc/profile.d/conda.sh && \
rm ~/miniconda.sh rm ~/miniconda.sh
RUN conda config --set always_yes yes --set changeps1 no && \ RUN conda config --set always_yes yes --set changeps1 no && \
conda create -y -q -n py2 python=2.7 mkl numpy scipy scikit-learn jupyter notebook ipython pandas matplotlib && \ conda create -y -q -n py2 python=2.7 mkl numpy scipy "scikit-learn<=0.21.3" jupyter notebook ipython pandas matplotlib && \
conda create -y -q -n py3 python=3.6 mkl numpy scipy scikit-learn jupyter notebook ipython pandas matplotlib conda create -y -q -n py3 python=3.6 mkl numpy scipy "scikit-learn<=0.21.3" jupyter notebook ipython pandas matplotlib
################################################################################################################# #################################################################################################################
# LightGBM # LightGBM
......
LightGBM GPU Tutorial LightGBM GPU Tutorial
===================== =====================
The purpose of this document is to give you a quick step-by-step tutorial on GPU training. The purpose of this document is to give you a quick step-by-step tutorial on GPU training.
...@@ -78,7 +78,7 @@ If you want to use the Python interface of LightGBM, you can install it now (alo ...@@ -78,7 +78,7 @@ If you want to use the Python interface of LightGBM, you can install it now (alo
:: ::
sudo apt-get -y install python-pip sudo apt-get -y install python-pip
sudo -H pip install setuptools numpy scipy scikit-learn -U sudo -H pip install setuptools numpy scipy "scikit-learn<=0.21.3" -U
cd python-package/ cd python-package/
sudo python setup.py install --precompile sudo python setup.py install --precompile
cd .. cd ..
......
...@@ -24,6 +24,10 @@ Training API ...@@ -24,6 +24,10 @@ Training API
Scikit-learn API Scikit-learn API
---------------- ----------------
.. warning::
The last supported version of scikit-learn is ``0.21.3``. Our estimators are incompatible with newer versions.
.. autosummary:: .. autosummary::
:toctree: pythonapi/ :toctree: pythonapi/
......
...@@ -15,11 +15,11 @@ Install ...@@ -15,11 +15,11 @@ Install
------- -------
Install Python-package dependencies, Install Python-package dependencies,
``setuptools``, ``wheel``, ``numpy`` and ``scipy`` are required, ``scikit-learn`` is required for sklearn interface and recommended: ``setuptools``, ``wheel``, ``numpy`` and ``scipy`` are required, ``scikit-learn<=0.21.3`` is required for sklearn interface and recommended:
:: ::
pip install setuptools wheel numpy scipy scikit-learn -U pip install setuptools wheel numpy scipy "scikit-learn<=0.21.3" -U
Refer to `Python-package`_ folder for the installation guide. Refer to `Python-package`_ folder for the installation guide.
......
...@@ -8,7 +8,7 @@ You should install LightGBM [Python-package](https://github.com/microsoft/LightG ...@@ -8,7 +8,7 @@ You should install LightGBM [Python-package](https://github.com/microsoft/LightG
You also need scikit-learn, pandas, matplotlib (only for plot example), and scipy (only for logistic regression example) to run the examples, but they are not required for the package itself. You can install them with pip: You also need scikit-learn, pandas, matplotlib (only for plot example), and scipy (only for logistic regression example) to run the examples, but they are not required for the package itself. You can install them with pip:
``` ```
pip install scikit-learn pandas matplotlib scipy -U pip install "scikit-learn<=0.21.3" pandas matplotlib scipy -U
``` ```
Now you can run examples in this folder, for example: Now you can run examples in this folder, for example:
......
...@@ -125,6 +125,7 @@ try: ...@@ -125,6 +125,7 @@ try:
from sklearn.cross_validation import StratifiedKFold, GroupKFold from sklearn.cross_validation import StratifiedKFold, GroupKFold
from sklearn.utils.validation import NotFittedError from sklearn.utils.validation import NotFittedError
SKLEARN_INSTALLED = True SKLEARN_INSTALLED = True
from sklearn import __version__ as SKLEARN_VERSION
_LGBMModelBase = BaseEstimator _LGBMModelBase = BaseEstimator
_LGBMRegressorBase = RegressorMixin _LGBMRegressorBase = RegressorMixin
_LGBMClassifierBase = ClassifierMixin _LGBMClassifierBase = ClassifierMixin
...@@ -140,6 +141,7 @@ try: ...@@ -140,6 +141,7 @@ try:
_LGBMComputeSampleWeight = compute_sample_weight _LGBMComputeSampleWeight = compute_sample_weight
except ImportError: except ImportError:
SKLEARN_INSTALLED = False SKLEARN_INSTALLED = False
SKLEARN_VERSION = '0.0.0'
_LGBMModelBase = object _LGBMModelBase = object
_LGBMClassifierBase = object _LGBMClassifierBase = object
_LGBMRegressorBase = object _LGBMRegressorBase = object
......
...@@ -7,7 +7,7 @@ import warnings ...@@ -7,7 +7,7 @@ import warnings
import numpy as np import numpy as np
from .basic import Dataset, LightGBMError, _ConfigAliases from .basic import Dataset, LightGBMError, _ConfigAliases
from .compat import (SKLEARN_INSTALLED, _LGBMClassifierBase, from .compat import (SKLEARN_INSTALLED, SKLEARN_VERSION, _LGBMClassifierBase,
LGBMNotFittedError, _LGBMLabelEncoder, _LGBMModelBase, LGBMNotFittedError, _LGBMLabelEncoder, _LGBMModelBase,
_LGBMRegressorBase, _LGBMCheckXY, _LGBMCheckArray, _LGBMCheckConsistentLength, _LGBMRegressorBase, _LGBMCheckXY, _LGBMCheckArray, _LGBMCheckConsistentLength,
_LGBMAssertAllFinite, _LGBMCheckClassificationTargets, _LGBMComputeSampleWeight, _LGBMAssertAllFinite, _LGBMCheckClassificationTargets, _LGBMComputeSampleWeight,
...@@ -294,6 +294,9 @@ class LGBMModel(_LGBMModelBase): ...@@ -294,6 +294,9 @@ class LGBMModel(_LGBMModelBase):
""" """
if not SKLEARN_INSTALLED: if not SKLEARN_INSTALLED:
raise LightGBMError('Scikit-learn is required for this module') raise LightGBMError('Scikit-learn is required for this module')
elif SKLEARN_VERSION > '0.21.3':
raise RuntimeError("The last supported version of scikit-learn is 0.21.3.\n"
"Found version: {0}.".format(SKLEARN_VERSION))
self.boosting_type = boosting_type self.boosting_type = boosting_type
self.objective = objective self.objective = objective
......
...@@ -314,7 +314,7 @@ if __name__ == "__main__": ...@@ -314,7 +314,7 @@ if __name__ == "__main__":
install_requires=[ install_requires=[
'numpy', 'numpy',
'scipy', 'scipy',
'scikit-learn' 'scikit-learn<=0.21.3'
], ],
maintainer='Guolin Ke', maintainer='Guolin Ke',
maintainer_email='guolin.ke@microsoft.com', maintainer_email='guolin.ke@microsoft.com',
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment