Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ImportError: cannot import name cross_validation

I cannot import the cross_validation from sklearn library; I use sklearn version 0.20.0

from sklearn import cross_validation

later in the code:

features_train, features_test, labels_train, labels_test = cross_validation.train_test_split(word_data, authors, test_size=0.1, random_state=42)

Error:

Traceback (most recent call last):
  File "D:\me\M.Sc\Udacity_ML_course\ud120-projects-  master\naive_bayes\nb_author_id.py", line 16, in <module>
    from email_preprocess import preprocess
  File "../tools/email_preprocess.py", line 8, in <module>
    from sklearn import cross_validation
ImportError: cannot import name cross_validation
like image 385
mnabil Avatar asked Oct 26 '18 15:10

mnabil


2 Answers

This happens because there is no cross_validation object in sklearn. You're likely looking for something more like the cross_validate function. You can access that through

from sklearn.model_selection import cross_validate

However, you don't need to import any cross-validation software to perform the train-test split, since that will just randomly sample from the data. Try

from sklearn.model_selection import train_test_split

followed by

features_train, features_test, labels_train, labels_test = train_test_split(word_data, authors, test_size=0.1, random_state=42)
like image 177
jwil Avatar answered Nov 06 '22 21:11

jwil


cross_validation used to exist as a Scikit package*, but was deprecated at some point.

If you're looking for train_test_split as your code indicates, it's in model_selection:

from sklearn import model_selection

features_train, features_test, labels_train, labels_test = model_selection.train_test_split(
    word_data, authors, test_size=0.1, random_state=42)

*Looks like this changed in 0.18.

like image 8
Brad Solomon Avatar answered Nov 06 '22 21:11

Brad Solomon