J'ai cette erreur pour essayer de charger un modèle SVM enregistré. J'ai essayé de désinstaller sklearn, NumPy et SciPy, en réinstallant à nouveau les dernières versions (en utilisant pip). J'obtiens toujours cette erreur. Pourquoi?
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
MISE À JOUR: OK, en suivant ici , et
pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn
L'erreur est maintenant partie, même si je n'ai toujours aucune idée de la raison pour laquelle cela s'est produit en premier lieu ...
python
numpy
scikit-learn
Bleu482
la source
la source
--no-use-wheel
recompile le module à partir des sources avec tout ce que vous avez sur votre système.--no-binary
.pip install --no-binary :all: pandas
. FWIW J'obtenais cette erreur sur une nouvelle version de VE au-dessus de la version PythonPython 3.6.6 :: Anaconda, Inc.
avec uniquementrequests
etpandas
installée dans l'environnement.gfortran
pour que scipy compile:sudo apt install gfortran
Réponses:
Selon MAINT: faites taire les avertissements Cython sur les changements de taille dtype / ufunc. - numpy / numpy :
et les vérifications sont insérées par Cython (sont donc présentes dans tout module compilé avec lui).
Pour faire court, ces avertissements devraient être bénins dans le cas particulier de
numpy
, et ces messages sont filtrés depuisnumpy 1.8
(la branche sur laquelle ce commit est allé). Alors quescikit-learn 0.18.1
est compilé contrenumpy 1.6.1
.Pour filtrer ces avertissements vous - même , vous pouvez faire la même chose que le patch :
Bien sûr, vous pouvez simplement recompiler tous les modules affectés à partir des sources contre votre local
numpy
avecpip install --no-binary :all:
¹ à la place si vous avez les outilsballespour cela.Histoire plus longue: le promoteur du correctif affirme qu'il ne devrait y avoir aucun risque spécifiquement avec
numpy
, et les packages tiers sont intentionnellement construits contre des versions plus anciennes:En conséquence, les développeurs de Cython ont accepté de faire confiance à l'équipe numpy pour maintenir la compatibilité binaire à la main , nous pouvons donc probablement nous attendre à ce que l'utilisation de versions avec des changements ABI cassants produise une exception spécialement conçue ou un autre show-stop explicite.
¹ L'
--no-use-wheel
option précédemment disponible a été supprimée depuispip 10.0.0
.la source
--no-binary
, remplacements pour les fichiers exigences par-exigence . Aussi, je suis venu ici pourpandas
, alors voici lepandas
problème GitHub pertinent .C'est le problème de la nouvelle version de numpy (1.15.0)
Vous pouvez rétrograder numpy et ce problème sera résolu:
sudo pip uninstall numpy
sudo pip install numpy==1.14.5
Cela fonctionne.
la source
pip install numpy==1.15.1
m'a fait passer de 1.15.0 à 1.15.1 et les messages d'avertissement sont partis.si vous êtes dans un environnement anaconda, utilisez:
la source
conda update numpy
J'ai essayé les méthodes mentionnées ci-dessus, mais rien n'a fonctionné. Mais le problème avait disparu après avoir installé les bibliothèques via apt install,
Pour Python3,
Pour Python2,
J'espère que cela pourra aider.
la source
numpy
, à partir du référentiel officiel de la distribution plutôt que de PyPI, bien sûr, ils sont tous compilés par rapport à celui-cinumpy
. L'inconvénient est que vous n'obtenez peut-être pas les dernières versions.Mettez simplement à jour votre module numpy, pour le moment, il est 1.15.4. Pour les fenêtres
la source
Cette erreur se produit car les packages installés ont été compilés contre une version différente de numpy.
Nous devons reconstruire scipy et scikit-learn contre le local
numpy
.Pour nouveau
pip
(dans mon caspip 18.0
), cela a fonctionné:--no-binary
prend une liste de noms de paquets pour lesquels vous souhaitez ignorer les binaires. Dans ce cas, nous avons passé--no-binary scipy,scikit-learn
ce qui ignorera les binaires pour les paquets scipy, scikit-learn. Ne m'a pas aidéla source
Méta-informations: la méthode recommandée pour installer sklearn
[... ne pas compiler à partir des sources en utilisant pip]
la source
Notez qu'à partir de cython 0.29, il y a une nouvelle option check_size qui élimine l'avertissement à la source, donc aucune solution de contournement ne devrait être nécessaire une fois que cette version percole dans les différents packages
la source
Mon environnement est Python 2.7.15
J'essaie
mais ça ne marche pas. Il montre l'erreur:
Alors j'essaye:
Et ça marche: les avertissements inutiles ne s'affichent pas.
la source
--no-use-wheel
a été supprimée. Utilisez--no-binary :all:
plutôt.Lors de l'importation de scipy, les informations d'erreur indiquent: RuntimeWarning: la taille .type intégrée a changé, peut indiquer une incompatibilité binaire. Attendu zd, obtenu zd
J'ai résolu ce problème en mettant à jour la version python de 2.7.2 à 2.7.13
la source