Як виправити: немає модуля з назвою "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 , щоб розділити 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» не має атрибута «додавання».
Як виправити: якщо ви використовуєте всі скалярні значення, вам потрібно передати індекс
Як виправити: ValueError: неможливо перетворити float NaN на int

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *