Как исправить: нет модуля с именем «sklearn.cross_validation»;
Ошибка, с которой вы можете столкнуться при использовании Python:
ModuleNotFoundError : No module named 'sklearn.cross_validation'
Эта ошибка обычно возникает при попытке импортировать функцию train_test_split из sklearn с помощью следующей строки:
from sklearn. cross_validation import train_test_split
Однако субмодуль cross_validation был заменен субмодулем model_selection , поэтому вам необходимо использовать следующую строку:
from sklearn. model_selection import train_test_split
В следующем примере показано, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Допустим, мы хотим использовать функцию train_test_split sklearn , чтобы разделить DataFrame pandas на обучающий и тестовый наборы.
Предположим, мы пытаемся использовать следующий код для импорта функции 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 , чтобы разделить DataFrame pandas на набор для обучения и тестирования:
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: невозможно преобразовать число с плавающей запятой NaN в int.