ImportError:无法导入名称cross_validation

mna*_*bil 5 python scikit-learn

我无法从sklearn库中导入cross_validation;我使用sklearn版本0.20.0

from sklearn import cross_validation
Run Code Online (Sandbox Code Playgroud)

稍后在代码中:

features_train, features_test, labels_train, labels_test = cross_validation.train_test_split(word_data, authors, test_size=0.1, random_state=42)
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

Bra*_*mon 5

cross_validation 曾经作为Scikit软件包存在*,但在某些时候已被弃用。

如果您要train_test_split按照代码指示进行查找,则位于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)
Run Code Online (Sandbox Code Playgroud)

*看起来像在0.18中更改了。


小智 5

发生这种情况是因为中没有cross_validation对象sklearn。您可能正在寻找更类似于该cross_validate功能的东西。您可以通过访问

from sklearn.model_selection import cross_validate
Run Code Online (Sandbox Code Playgroud)

但是,您无需导入任何交叉验证软件即可执行训练测试拆分,因为这只会从数据中随机抽样。尝试

from sklearn.model_selection import train_test_split
Run Code Online (Sandbox Code Playgroud)

其次是

features_train, features_test, labels_train, labels_test = train_test_split(word_data, authors, test_size=0.1, random_state=42)
Run Code Online (Sandbox Code Playgroud)