Як виправити: немає модуля з назвою "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