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?

arthurckl
sumber
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

Dima Lituiev
sumber
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

ayat ullah sony
sumber
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.

Murat Şahin
sumber
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
Richard Rublev
sumber
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.

Tanmoy Bhowmick
sumber
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

nantitv
sumber
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
ROHAN YEOLE
sumber
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

baya prakash reddy
sumber
7

sklearn.cross_validation sekarang diubah menjadi sklearn.model_selection

Ubah saja

sklearn.cross_validation

untuk

sklearn.model_selection
Sani Kamal
sumber
4

ubah kode seperti ini

# from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split
Muhammad Shabin
sumber
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
jss367
sumber
2

cross_validation sudah ditinggalkan beberapa waktu lalu, coba nonaktifkan dengan model_selection

Aniket Mukherjee
sumber
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
decision_scientist_noah
sumber
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.

S Habeeb Ullah
sumber