如何修复:没有名为“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
以下示例展示了如何在实践中解决此错误。
如何重现错误
假设我们想要使用sklearn的train_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