如何修复:没有名为“sklearn.cross_validation”的模块;


使用Python时可能会遇到的错误是:

 ModuleNotFoundError : No module named 'sklearn.cross_validation'

当尝试使用以下行从sklearn导入train_test_split函数时,通常会发生此错误:

 from sklearn. cross_validation import train_test_split

但是, cross_validation子模块已被model_selection 子模块取代,因此您必须使用以下行:

 from sklearn. model_selection import train_test_split

以下示例展示了如何在实践中解决此错误。

如何重现错误

假设我们想要使用sklearntrain_test_split函数将 pandas DataFrame 拆分为训练集和测试集。

假设我们尝试使用以下代码导入train_test_split函数:

 from sklearn. cross_validation import train_test_split

ModuleNotFoundError : No module named 'sklearn.cross_validation'

我们收到错误,因为我们在尝试导入train_test_split函数时使用了错误的子模块名称。

如何修复错误

要修复此错误,我们只需使用model_selection子模块即可:

 from sklearn. model_selection import train_test_split

这次我们没有收到任何错误。

然后我们可以使用train_test_split函数将 pandas DataFrame 拆分为训练集和测试集:

 from sklearn. model_selection import train_test_split
import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (1)

#create DataFrame with 1000 rows and 3 columns
df = pd. DataFrame ({' x1 ': np.random.randint(30, size=1000),
                   ' x2 ': np.random.randint(12, size=1000),
                   ' y ': np.random.randint(2, size=1000)})

#split original DataFrame into training and testing sets
train, test = train_test_split(df, test_size=0.2, random_state=0)

#view first few rows of each set
print ( train.head ())

     x1 x2 y
687 16 2 0
500 18 2 1
332 4 10 1
979 2 8 1
817 11 1 0

print ( test.head ())

     x1 x2 y
993 22 1 1
859 27 6 0
298 27 8 1
553 20 6 0
672 9 2 1

我们成功地使用了train_test_split函数,没有任何错误。

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复:列重叠但未指定后缀
如何修复:对象“numpy.ndarray”没有“append”属性
如何修复:如果使用所有标量值,则需要传递索引
如何修复:ValueError:无法将 float NaN 转换为 int

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注