У меня есть эта ошибка при попытке загрузить сохраненную модель SVM. Я попытался удалить sklearn, NumPy и SciPy, заново установить все последние версии вместе (используя pip). Я все еще получаю эту ошибку. Зачем?
In [1]: import sklearn; print sklearn.__version__
0.18.1
In [3]: import numpy; print numpy.__version__
1.11.2
In [5]: import scipy; print scipy.__version__
0.18.1
In [7]: import pandas; print pandas.__version__
0.19.1
In [10]: clf = joblib.load('model/trained_model.pkl')
---------------------------------------------------------------------------
RuntimeWarning Traceback (most recent call last)
<ipython-input-10-5e5db1331757> in <module>()
----> 1 clf = joblib.load('sentiment_classification/model/trained_model.pkl')
/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/numpy_pickle.pyc in load(filename, mmap_mode)
573 return load_compatibility(fobj)
574
--> 575 obj = _unpickle(fobj, filename, mmap_mode)
576
577 return obj
/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/numpy_pickle.pyc in _unpickle(fobj, filename, mmap_mode)
505 obj = None
506 try:
--> 507 obj = unpickler.load()
508 if unpickler.compat_mode:
509 warnings.warn("The file '%s' has been generated with a "
/usr/lib/python2.7/pickle.pyc in load(self)
862 while 1:
863 key = read(1)
--> 864 dispatch[key](self)
865 except _Stop, stopinst:
866 return stopinst.value
/usr/lib/python2.7/pickle.pyc in load_global(self)
1094 module = self.readline()[:-1]
1095 name = self.readline()[:-1]
-> 1096 klass = self.find_class(module, name)
1097 self.append(klass)
1098 dispatch[GLOBAL] = load_global
/usr/lib/python2.7/pickle.pyc in find_class(self, module, name)
1128 def find_class(self, module, name):
1129 # Subclasses may override this
-> 1130 __import__(module)
1131 mod = sys.modules[module]
1132 klass = getattr(mod, name)
/usr/local/lib/python2.7/dist-packages/sklearn/svm/__init__.py in <module>()
11 # License: BSD 3 clause (C) INRIA 2010
12
---> 13 from .classes import SVC, NuSVC, SVR, NuSVR, OneClassSVM, LinearSVC, \
14 LinearSVR
15 from .bounds import l1_min_c
/usr/local/lib/python2.7/dist-packages/sklearn/svm/classes.py in <module>()
2 import numpy as np
3
----> 4 from .base import _fit_liblinear, BaseSVC, BaseLibSVM
5 from ..base import BaseEstimator, RegressorMixin
6 from ..linear_model.base import LinearClassifierMixin, SparseCoefMixin, \
/usr/local/lib/python2.7/dist-packages/sklearn/svm/base.py in <module>()
6 from abc import ABCMeta, abstractmethod
7
----> 8 from . import libsvm, liblinear
9 from . import libsvm_sparse
10 from ..base import BaseEstimator, ClassifierMixin
__init__.pxd in init sklearn.svm.libsvm (sklearn/svm/libsvm.c:10207)()
RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 80
ОБНОВЛЕНИЕ: хорошо, следуя здесь , и
pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn
Ошибка теперь ушла, хотя я до сих пор не знаю, почему она возникла ...
python
numpy
scikit-learn
Blue482
источник
источник
--no-use-wheel
перекомпилирует модуль из исходного кода против того, что у вас есть в вашей системе.--no-binary
.pip install --no-binary :all: pandas
. Я получил эту ошибку в новой сборке VE поверх версии PythonPython 3.6.6 :: Anaconda, Inc.
с толькоrequests
иpandas
установленной в среде.gfortran
scipy для компиляции:sudo apt install gfortran
Ответы:
Согласно MAINT: молчание предупреждений Cython об изменении размера dtype / ufunc. - NumPy / NUMPY :
и проверки вставляются Cython (следовательно, присутствуют в любом скомпилированном модуле).
Короче говоря, эти предупреждения должны быть доброкачественными в конкретном случае
numpy
, и с тех пор эти сообщения отфильтровываютсяnumpy 1.8
(ветвь, на которую пошел этот коммит). Покаscikit-learn 0.18.1
компилируется противnumpy 1.6.1
.Чтобы отфильтровать эти предупреждения самостоятельно , вы можете сделать то же самое, что и в патче :
Конечно, вы можете просто перекомпилировать все затронутые модули из источника против вашего локального
numpy
сpip install --no-binary :all:
¹ вместо если у вас естьшарыинструментов для этого.Более длинная история: сторонник патча утверждает, что не должно быть никакого риска, особенно
numpy
, и сторонние пакеты специально созданы для более старых версий:В результате разработчики Cython согласились доверить команде NumPy поддержку бинарной совместимости вручную , поэтому мы, вероятно, можем ожидать, что использование версий с нарушением ABI приведет к специально созданному исключению или некоторому другому явному ограничителю show.
Since Ранее доступная
--no-use-wheel
опция была удалена с тех порpip 10.0.0
.источник
--no-binary
, в-требование переопределение для требований файлов . Кроме того, я пришел сюдаpandas
, так что вот соответствующаяpandas
проблема GitHub .Это проблема новой версии NumPy (1.15.0)
Вы можете понизить numpy, и эта проблема будет исправлена:
sudo pip uninstall numpy
sudo pip install numpy==1.14.5
Это работает ..
источник
pip install numpy==1.15.1
получил меня от 1.15.0 до 1.15.1 и предупреждающие сообщения исчезли.если вы находитесь в среде анаконды, используйте:
источник
conda update numpy
Я пробовал вышеупомянутые способы, но ничего не получалось. Но проблема исчезла после того, как я установил библиотеки через apt install,
Для Python3
Для Python2
Надеюсь, это поможет.
источник
numpy
из официального дистрибутива дистрибутива, а не из PyPI, конечно, все они будут скомпилированы с тем жеnumpy
. Недостатком является то, что вы можете не получать последние версии.Просто обновите свой модуль numpy, сейчас он 1.15.4. Для окон
источник
Эта ошибка возникает из-за того, что установленные пакеты были собраны с другой версией numpy.
Мы должны восстановить scipy и scikit-learn против местных
numpy
.Для новых
pip
(в моем случаеpip 18.0
) это сработало:--no-binary
принимает список имен пакетов, для которых вы хотите игнорировать двоичные файлы. В этом случае мы пропустили,--no-binary scipy,scikit-learn
что будет игнорировать двоичные файлы для пакетов scipy, scikit-learn. Не помогло мнеисточник
Мета-информация: рекомендуемый способ установки склеарна
[... не компилировать из источника используя pip]
источник
Обратите внимание, что в Cython 0.29 появилась новая опция check_size, которая устраняет предупреждение в источнике, поэтому никаких обходных путей не требуется, когда эта версия просачивается в различные пакеты.
источник
Моя среда Python 2.7.15
я пытаюсь
Но это не работает. Это показывает ошибку:
Тогда я пытаюсь:
И это работает: бесполезные предупреждения не показывают.
источник
--no-use-wheel
была удалена. Используйте--no-binary :all:
вместо этого.При импорте scipy отображается информация об ошибке: RuntimeWarning: встроенный размер .type изменен, может указывать на двоичную несовместимость. Ожидаемый ZD, получил ZD
Я решил эту проблему путем обновления версии Python с 2.7.2 до 2.7.13
источник