ImportError: Tidak ada modul bernama sklearn.cross_validation


174

Saya menggunakan python 2.7 di Ubuntu 14.04. Saya menginstal scikit-learn, numpy dan matplotlib dengan perintah-perintah ini:

sudo apt-get install build-essential python-dev python-numpy \
python-numpy-dev python-scipy libatlas-dev g++ python-matplotlib \
ipython

Tetapi ketika saya mengimpor paket-paket ini:

from sklearn.cross_validation import train_test_split

Ini mengembalikan saya kesalahan ini:

ImportError: No module named sklearn.cross_validation

Apa yang harus saya lakukan?


mungkin nama modul Anda salah jika Anda telah menginstal sklearn dan anaconda dengan benar.
CKM

11
Saya benar-benar hanya mengulanginya, tetapi Anda harus menggunakan sklearn.model_selection mulai sekarang. cross_validation tidak dapat digunakan sejak sklearn 20+
Michal Mikuláši

Jawaban:


584

Ini harus berkaitan dengan penggantian nama dan penghentian cross_validationsub-modul model_selection. Cobalah mengganti cross_validationkemodel_selection


8
Ini pastinya jawaban yang dipilih
rhys_jsk

Ini harus menjadi jawaban yang diterima. Tidak hanya berfungsi, tetapi suara lebih dari 200 hingga 4 pada saat posting saya.
Jerry Destremps

Mengapa pengembang sklearn tidak memasukkan alias untuk kompatibilitas mundur? Juga, dokumen untuk versi yang lebih lama harus menunjukkan refactor ini: scikit-learn.org/0.16/modules/generated/… .
flow2k

bekerja seperti pesona
omah94

139

train_test_split sekarang ada di model_selection. Ketik saja:

from sklearn.model_selection import train_test_split

itu harus bekerja


43

Saya kira seleksi silang tidak aktif lagi. Kita harus menggunakan pemilihan model sebagai gantinya. Anda dapat menulisnya untuk menjalankan,from sklearn.model_selection import train_test_split

Itu dia.


Ini jawabannya. Kamu Menakjubkan.
Biswajit Panday

35

Pastikan Anda telah menginstal Anaconda dan kemudian membuat virtualenv menggunakan conda . Ini akan memastikan semua impor berfungsi

Python 2.7.9 |Anaconda 2.2.0 (64-bit)| (default, Mar  9 2015, 16:20:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> from sklearn.cross_validation import train_test_split

Tidak, saya tidak memilikinya, saya harus menginstal Anaconda?
arthurckl

Yah, saya akan menyarankan Anda untuk menginstalnya. Tetapi Anda juga dapat mencoba sudo apt-get install python-sklearn, yang seharusnya berhasil.
Richard Rublev

7
Jawaban oleh @DimaLituiev benar-benar jawaban yang benar di sini. Masalah ini sebagian besar terkait dengan penggantian nama, bukan paket yang benar-benar hilang.
Amrinder Arora

2
Ini belum tentu diperlukan. Anda menyarankan untuk menginstal lingkungan baru hanya untuk satu paket yang diganti namanya, saya akan mengatakan solusi ini adalah pembunuhan yang berlebihan. Solusi Dima harus ditandai sebagai jawaban yang benar
MuhsinFatih

Saya kira pertanyaan itu seharusnya sudah diatasi jika ia telah "mengimpor sklearn" bekerja atau tidak terlebih dahulu. Jika berhasil, mungkin ini bukan masalah penamaan.
ju.

24

sklearn.cross_validation sekarang diubah menjadi sklearn.model_selection

Gunakan saja

from sklearn.model_selection import train_test_split

Saya pikir itu akan berhasil.



15

Mungkin itu karena penghentian sklearn.cross_validation. Silakan ganti sklearn.cross_validation dengan sklearn.model_selection

Ref- https://github.com/amueller/scipy_2015_sklearn_tutorial/issues/60


1
Tampaknya jawaban Anda sama dengan yang sebelumnya diberikan di utas yang sama. Jika menurut Anda jawaban itu dapat ditingkatkan, pertimbangkan untuk mengeditnya alih-alih membuat jawaban baru untuk pertanyaan yang sama.
Johan

@Johan Entah bagaimana aku tidak melihat jawaban yang lain. Saya bisa menghapus jawaban saya jika Anda mau.
nantitv

12

Memisahkan dataset ke dalam set Pelatihan dan set Tes

from sklearn.model_selection import train_test_split

2
Solusi yang sama dengan jawaban ayat ullah sony.
Eric Aya

9

Past: from sklearn.cross_validation (Paket ini sudah usang dalam versi 0.18 dari 0.20 dan selanjutnya diubah menjadi from sklearn import model_selection).

Menyajikan: from sklearn import model_selection

Contoh 2:

Past: from sklearn.cross_validation import cross_val_score(Versi 0.18 yang sudah usang)

Hadir: from sklearn.model_selection import cross_val_score


7

sklearn.cross_validation sekarang diubah menjadi sklearn.model_selection

Ubah saja

sklearn.cross_validation

untuk

sklearn.model_selection

4

ubah kode seperti ini

# from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split

4

Jika Anda memiliki kode yang perlu menjalankan berbagai versi, Anda dapat melakukan sesuatu seperti ini:

import sklearn
if sklearn.__version__ > '0.18':
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

Ini tidak ideal karena Anda membandingkan versi paket sebagai string, yang biasanya berfungsi tetapi tidak selalu. Jika Anda ingin menginstal packaging, ini adalah pendekatan yang jauh lebih baik:

from packaging.version import parse
import sklearn
if parse(sklearn.__version__) > parse('0.18'):
    from sklearn.model_selection import train_test_split
else:
    from sklearn.cross_validation import train_test_split

2

cross_validation sudah ditinggalkan beberapa waktu lalu, coba nonaktifkan dengan model_selection


coba tambahkan lebih banyak penjelasan pada jawaban Anda untuk memberikan nilai lebih.
Zeina

2

train_test_splitadalah bagian dari modul sklearn.model_selection, oleh karena itu, Anda mungkin perlu mengimpor modul darimodel_selection

Kode:

from sklearn.model_selection import train_test_split

0

Entah kita harus menurunkan versi scikit-belajar ke versi terbaru yang kompatibel. Dan ini bisa dilakukan setelah mengaktifkan lingkungan conda. Gunakan perintah berikut untuk menurunkan scikit-pelajari:

pip uninstall scikit-learn
pip install scikit-learn==0.19.2

ATAU

Ketika kita tidak ingin downgrade scikit-pelajari. Kemudian kita semua tahu bahwa nama "cross_validation" tidak digunakan lagi dalam versi scikit-learn dan digantikan oleh "model_selection" di dalam versi anaconda baru. Karena itu kami mungkin mendapat peringatan atau bahkan kesalahan.

Untuk menghindari ini, kita hanya perlu mengganti:

from sklearn.cross_validation import train_test_split

untuk

from sklearn.model_selection import train_test_split 

Semoga ini bisa membantu menyelesaikan masalah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.