Как исправить: нет модуля с именем «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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *