Saya memiliki kesalahan ini karena mencoba memuat model SVM yang disimpan. Saya telah mencoba menghapus sklearn, NumPy dan SciPy, menginstal ulang versi terbaru secara bersamaan (menggunakan pip). Saya masih mendapatkan kesalahan ini. Mengapa?
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
PEMBARUAN: OK, dengan mengikuti di sini , dan
pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn
Kesalahan sekarang telah hilang, meskipun saya masih tidak tahu mengapa itu terjadi di tempat pertama ...
python
numpy
scikit-learn
Blue482
sumber
sumber
--no-use-wheel
mengkompilasi ulang modul dari sumber terhadap apa pun yang Anda miliki di sistem Anda.--no-binary
.pip install --no-binary :all: pandas
. FWIW Saya mendapatkan kesalahan ini pada VE build baru di atas versi PythonPython 3.6.6 :: Anaconda, Inc.
dengan hanyarequests
danpandas
diinstal di lingkungan.gfortran
untuk scipy untuk mengkompilasi:sudo apt install gfortran
Jawaban:
Menurut MAINT: silence peringatan Cython tentang perubahan ukuran dtype / ufunc. - numpy / numpy :
dan pemeriksaan dimasukkan oleh Cython (karenanya ada dalam setiap modul yang dikompilasi dengannya).
Singkatnya, peringatan ini harus jinak dalam kasus tertentu
numpy
, dan pesan-pesan ini disaring sejaknumpy 1.8
(cabang dari komit ini pergi ke). Sementarascikit-learn 0.18.1
dikompilasi melawannumpy 1.6.1
.Untuk memfilter peringatan ini sendiri , Anda dapat melakukan hal yang sama seperti yang dilakukan patch :
Tentu saja, Anda hanya dapat mengkompilasi ulang semua modul yang terkena dampak dari sumber terhadap lokal Anda
numpy
denganpip install --no-binary :all:
¹ sebagai gantinya jika Anda memiliki alatbolauntuk itu.Kisah yang lebih panjang: pengusul klaim mengklaim tidak boleh ada risiko khusus
numpy
, dan paket pihak ke-3 sengaja dibuat untuk versi yang lebih lama:Sebagai hasilnya, pengembang Cython setuju untuk mempercayai tim numpy dengan menjaga kompatibilitas biner dengan tangan , jadi kita mungkin bisa berharap bahwa menggunakan versi dengan melanggar perubahan ABI akan menghasilkan pengecualian yang dibuat khusus atau beberapa show-stopper eksplisit lainnya.
¹ Opsi yang tersedia sebelumnya
--no-use-wheel
telah dihapus sejakpip 10.0.0
.sumber
--no-binary
, per-persyaratan menimpa file persyaratan . Saya juga datang ke sinipandas
, jadi inilahpandas
masalah GitHub yang relevan .Ini masalah versi numpy baru (1.15.0)
Anda dapat menurunkan versi numpy dan masalah ini akan diperbaiki:
sudo pip uninstall numpy
sudo pip install numpy==1.14.5
Ini bekerja ..
sumber
pip install numpy==1.15.1
membuat saya dari 1.15.0 ke 1.15.1 dan pesan peringatan hilang.jika Anda berada di lingkungan anaconda gunakan:
sumber
conda update numpy
Saya sudah mencoba cara yang disebutkan di atas, tetapi tidak ada yang berhasil. Tapi masalah itu hilang setelah saya menginstal perpustakaan melalui apt install,
Untuk Python3,
Untuk Python2,
Semoga itu bisa membantu.
sumber
numpy
, dari repositori distro resmi daripada dari PyPI, tentu saja mereka semua dikompilasi dengan yang samanumpy
. Kelemahannya adalah Anda mungkin tidak mendapatkan versi terbaru.Cukup tingkatkan modul numpy Anda, saat ini 1.15.4. Untuk windows
sumber
Kesalahan ini terjadi karena paket yang diinstal dibangun berbeda versi numpy.
Kita perlu membangun kembali scipy dan scikit-belajar melawan lokal
numpy
.Untuk yang baru
pip
(dalam kasus sayapip 18.0
) ini berfungsi:--no-binary
mengambil daftar nama paket yang ingin Anda abaikan binari. Dalam hal ini kami melewati--no-binary scipy,scikit-learn
yang akan mengabaikan binari untuk paket scipy, scikit-learn. Tidak membantu sayasumber
Meta-informasi: Cara yang disarankan untuk menginstal sklearn
[... jangan kompilasi dari sumber menggunakan pip]
sumber
Perhatikan bahwa pada cython 0.29 ada opsi check_size baru yang menghilangkan peringatan di sumbernya, jadi tidak ada solusi yang diperlukan setelah versi meresap ke berbagai paket
sumber
Lingkungan saya adalah Python 2.7.15
saya coba
tetapi tidak berhasil. Ini menunjukkan kesalahan:
Lalu saya mencoba:
Dan itu berhasil: peringatan yang tidak berguna tidak muncul.
sumber
--no-use-wheel
telah dihapus. Gunakan--no-binary :all:
sebagai gantinya.Ketika mengimpor scipy, info kesalahan menunjukkan: RuntimeWarning: builtin .type size berubah, dapat menunjukkan ketidakcocokan biner. Diharapkan zd, dapatkan zd
Saya memecahkan masalah ini dengan memperbarui versi python dari 2.7.2 ke 2.7.13
sumber