I am trying to import a python package called lazypredict
for my ML project. LazyPredict is an AutoML package
So, I did the below
import lazypredict
from lazypredict.Supervised import REGRESSORS
However, there is an error when I execute the 2nd line and the full error message is given below
How can I avoid this and import REGRESSORS module successfully?
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [5], in <cell line: 22>()
20 from sklearn.ensemble import *
21 import lazypredict
---> 22 from lazypredict.Supervised import REGRESSORS
File ~\Anaconda3\lib\site-packages\lazypredict\Supervised.py:73, in <module>
36 removed_classifiers = [
37 "ClassifierChain",
38 "ComplementNB", (...)
50 "VotingClassifier",
51 ]
53 removed_regressors = [
54 "TheilSenRegressor",
55 "ARDRegression", (...)
68 "VotingRegressor",
69 ]
71 CLASSIFIERS = [
72 est
---> 73 for est in all_estimators()
74 if (issubclass(est[1], ClassifierMixin) and (est[0] not in removed_classifiers))
75 ]
77 REGRESSORS = [
78 est
79 for est in all_estimators()
80 if (issubclass(est[1], RegressorMixin) and (est[0] not in removed_regressors))
81 ]
83 REGRESSORS.append(("XGBRegressor", xgboost.XGBRegressor))
File ~\Anaconda3\lib\site-packages\sklearn\utils\__init__.py:1174, in all_estimators(type_filter) 1151 """Get a list of all estimators from sklearn. 1152 1153 This function crawls the module and gets all classes that inherit (...) 1171 and ``class`` is the actual type of the class. 1172 """ 1173 # lazy import to avoid circular imports from sklearn.base
-> 1174 from ._testing import ignore_warnings 1175 from ..base import ( 1176 BaseEstimator, 1177 ClassifierMixin, (...) 1180 ClusterMixin, 1181 ) 1183 def is_abstract(c):
File ~\Anaconda3\lib\site-packages\sklearn\utils\_testing.py:532, in <module>
527 skip_travis = pytest.mark.skipif(
528 os.environ.get("TRAVIS") == "true", reason="skip on travis"
529 )
530 fails_if_pypy = pytest.mark.xfail(IS_PYPY, reason="not compatible with PyPy")
531 fails_if_unstable_openblas = pytest.mark.xfail(
--> 532 _in_unstable_openblas_configuration(),
533 reason="OpenBLAS is unstable for this configuration",
534 )
535 skip_if_no_parallel = pytest.mark.skipif(
536 not joblib.parallel.mp, reason="joblib is in serial mode"
537 )
539 # Decorator for tests involving both BLAS calls and multiprocessing.
540 #
541 # Under POSIX (e.g. Linux or OSX), using multiprocessing in conjunction (...)
555 # errors on interactively defined functions. It therefore not enabled by
556 # default.
File ~\Anaconda3\lib\site-packages\sklearn\utils\__init__.py:93, in
_in_unstable_openblas_configuration()
90 import numpy # noqa
91 import scipy # noqa
---> 93 modules_info = threadpool_info()
95 open_blas_used = any(info["internal_api"] == "openblas" for info in modules_info)
96 if not open_blas_used:
File ~\Anaconda3\lib\site-packages\sklearn\utils\fixes.py:162, in threadpool_info()
160 return controller.info()
161 else:
--> 162 return threadpoolctl.threadpool_info()
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:124, in threadpool_info()
107 @_format_docstring(USER_APIS=list(_ALL_USER_APIS),
108 INTERNAL_APIS=_ALL_INTERNAL_APIS)
109 def threadpool_info():
110 """Return the maximal number of threads for each detected library.
111
112 Return a list with all the supported modules that have been found. Each (...)
122 In addition, each module may contain internal_api specific entries.
123 """
--> 124 return _ThreadpoolInfo(user_api=_ALL_USER_APIS).todicts()
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:340, in
_ThreadpoolInfo.__init__(self, user_api, prefixes, modules)
337 self.user_api = [] if user_api is None else user_api
339 self.modules = []
--> 340 self._load_modules()
341 self._warn_if_incompatible_openmp()
342 else:
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:373, in
_ThreadpoolInfo._load_modules(self)
371 self._find_modules_with_dyld()
372 elif sys.platform == "win32":
--> 373 self._find_modules_with_enum_process_module_ex()
374 else:
375 self._find_modules_with_dl_iterate_phdr()
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:485, in
_ThreadpoolInfo._find_modules_with_enum_process_module_ex(self)
482 filepath = buf.value
484 # Store the module if it is supported and selected
--> 485 self._make_module_from_path(filepath)
486 finally:
487 kernel_32.CloseHandle(h_process)
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:515, in
_ThreadpoolInfo._make_module_from_path(self, filepath)
513 if prefix in self.prefixes or user_api in self.user_api:
514 module_class = globals()[module_class]
--> 515 module = module_class(filepath, prefix, user_api, internal_api)
516 self.modules.append(module)
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:606, in
_Module.__init__(self, filepath, prefix, user_api, internal_api)
604 self.internal_api = internal_api
605 self._dynlib = ctypes.CDLL(filepath, mode=_RTLD_NOLOAD)
--> 606 self.version = self.get_version()
607 self.num_threads = self.get_num_threads()
608 self._get_extra_info()
File ~\Anaconda3\lib\site-packages\threadpoolctl.py:646, in
_OpenBLASModule.get_version(self)
643 get_config = getattr(self._dynlib, "openblas_get_config",
644 lambda: None)
645 get_config.restype = ctypes.c_char_p
--> 646 config = get_config().split()
647 if config[0] == b"OpenBLAS":
648 return config[1].decode("utf-8")
AttributeError: 'NoneType' object has no attribute 'split'
There are two problems: (1) Windows 32-bit Python, (2) Missing OpenBLAS
.
Here are the key parts of the traceback:
372 elif sys.platform == "win32":
--> 373 self._find_modules_with_enum_process_module_ex()
------------------------------------------------------------------
643 get_config = getattr(self._dynlib, "openblas_get_config",
644 lambda: None)
645 get_config.restype = ctypes.c_char_p
--> 646 config = get_config().split()
The easiest fix is probably installing Anaconda or Miniconda on Windows, installing scipy
and numpy
, then running pip install lazypredict
:
conda install numpy scipy
pip install lazypredict