Як розділити набір даних за допомогою функції train_test_split() scikit-learn

Як розділити набір даних за допомогою функції train_test_split() scikit-learn

У цій статті ми обговоримо, як розділити набір даних за допомогою train_test_split() scikit-learns.

функція sklearn.model_selection.train_test_split():

Метод train_test_split() використовується для поділу наших даних на навчальні та тестові набори. По-перше, нам потрібно розділити наші дані на функції (X) і мітки (y). Фрейм даних поділяється на X_train, X_test, y_train і y_test. Набори X_train та y_train використовуються для навчання та підгонки моделі. Набори X_test і y_test використовуються для перевірки моделі, якщо вона передбачає правильні результати/мітки. ми можемо явно перевірити розмір поїзда та тестових наборів. Пропонується, щоб наші набори поїздів були більшими, ніж набори для тестування.

    Навчальний набір: Навчальний набір даних – це набір даних, який використовувався для відповідності моделі. Набір даних, на якому навчається модель. Ці дані бачить і вивчає модель. Тестовий набір: тестовий набір даних — це підмножина навчального набору даних, яка використовується для точної оцінки остаточної відповідності моделі. Набір перевірки: набір даних перевірки – це зразок даних із навчального набору моделі, який використовується для оцінки продуктивності моделі під час налаштування гіперпараметрів моделі. недостатньо підібрана: модель даних, яка є недостатньо підігнаною, має високий рівень помилок як для навчального набору, так і для неспостережуваних даних, оскільки вона не в змозі ефективно представити зв’язок між вхідними та вихідними змінними. переобладнання: коли статистична модель точно відповідає навчальним даним, але мета алгоритму втрачена, оскільки він не в змозі точно виконати невидимі дані, називається переобладнанням

Синтаксис: sklearn.model_selection.train_test_split(*масиви, test_size=Немає, train_size=Немає, random_state=Немає, shuffle=Правда, stratify=Немає

Параметри:

    *масиви: послідовність індексованих. Списки, масиви numpy, scipy-sparse матриці та фрейми даних pandas — усе це допустимі вхідні дані. test_size: int або float, за замовчуванням немає. Якщо float, воно має бути між 0,0 і 1,0 і представляти відсоток набору даних для тестового розділення. Якщо використовується int, це стосується загальної кількості тестових зразків. Якщо значенням є None, використовується доповнення до розміру поїзда. Буде встановлено значення 0,25, якщо розмір поїзда також не має значення. train_size: int або float, за замовчуванням немає. random_state : int, за замовчуванням Немає. Керує тим, як дані перемішуються перед виконанням розбиття. Для повторюваного виведення через кілька викликів функцій передайте int. shuffle: логічний об'єкт, за замовчуванням True. Чи потрібно перетасувати дані перед розділенням. Stratify має бути None, якщо shuffle=False. stratify: array-like object , за замовчуванням це None . Якщо вибрано «Немає», дані стратифікуються, використовуючи їх як мітки класу.

Повернення:

розщеплення: Тестовий розподіл вхідних даних представлений у вигляді списку.

Кроки для розділення набору даних:

Крок 1. Імпортуйте необхідні пакети або модулі:

На цьому кроці ми імпортуємо необхідні пакети або модулі в робоче середовище Python.

Python3




# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection> import> train_test_split>

Крок 2. Імпортуйте фрейм/набір даних:

Тут ми завантажуємо CSV за допомогою методу pd.read_csv() із pandas і отримуємо форму набору даних за допомогою функції shape().

CSV використано:

Python3




# importing data> df> => pd.read_csv(> 'prediction.csv'> )> print> (df.shape)>

Вихід:

(13, 3) 

Крок 3. Отримайте змінні функції X і Y:

Тут ми призначаємо змінні X і Y, у яких змінна ознаки X має незалежні змінні, а змінна ознаки y має залежну змінну.

Python3




X> => df[> 'area'> ]> y> => df[> 'prices'> ]>

Крок 4. Використовуйте клас розділеного тесту поїзда, щоб розділити дані на набори тренувань і тестів:

Тут клас train_test_split() із sklearn.model_selection використовується для поділу наших даних на навчальні та тестові набори, де змінні функції надаються як вхідні дані в метод. test_size визначає частину даних, яка піде в тестові набори, і випадковий стан використовується для відтворюваності даних.

Python3




# using the train test split function> X_train, X_test, y_train, y_test> => train_test_split(> > X,y , random_state> => 104> ,test_size> => 0.25> , shuffle> => True> )>

приклад:

У цьому прикладі імпортується файл «predictions.csv». Атрибут df.shape використовується для отримання форми кадру даних. Форма фрейму даних (13,3). Стовпці функцій беруться у змінну X, а стовпець результату – у змінну y. Змінні X і y передаються в методі train_test_split(), щоб розділити кадр даних на набори тренувань і тестів. Параметр випадкового стану використовується для відтворюваності даних. test_size задано як 0,25, що означає, що 25% даних потрапляє в тестові набори. 4 із 13 рядків у кадрі даних потрапляють у тестові набори. 75% даних потрапляє в набори поїздів, тобто 9 рядків із 13 рядків. Набори поїздів використовуються для підгонки та навчання моделі машинного навчання. Для оцінювання використовуються набори тестів.

CSV використано:

Python3




# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection> import> train_test_split> # importing data> df> => pd.read_csv(> 'prediction.csv'> )> print> (df.shape)> # head of the data> print> (> 'Head of the dataframe : '> )> print> (df.head())> print> (df.columns)> X> => df[> 'area'> ]> y> => df[> 'prices'> ]> # using the train test split function> X_train, X_test, y_train, y_test> => train_test_split(> > X,y , random_state> => 104> ,test_size> => 0.25> , shuffle> => True> )> # printing out train and test sets> print> (> 'X_train : '> )> print> (X_train.head())> print> (X_train.shape)> print> ('')> print> (> 'X_test : '> )> print> (X_test.head())> print> (X_test.shape)> print> ('')> print> (> 'y_train : '> )> print> (y_train.head())> print> (y_train.shape)> print> ('')> print> (> 'y_test : '> )> print> (y_test.head())> print> (y_test.shape)>

Вихід:

(13, 3) Head of the dataframe : Unnamed: 0 area prices 0 0 1000 316404.109589 1 1 1500 384297.945205 2 2 2300 492928.082192 3 3 3540 661304.794521 4 4 4120 740061.643836 Index(['Unnamed: 0', 'area', 'prices'], dtype='object') X_train : 3 3540 7 3460 4 4120 0 1000 8 4750 Name: area, dtype: int64 (9,) X_test : 12 7100 2 2300 11 8600 10 9000 Name: area, dtype: int64 (4,) y_train : 3 661304.794521 7 650441.780822 4 740061.643836 0 316404.109589 8 825607.876712 Name: prices, dtype: float64 (9,) y_test : 12 1.144709e+06 2 4.929281e+05 11 1.348390e+06 10 1.402705e+06 Name: prices, dtype: float64 (4,) 

приклад:

У цьому прикладі виконуються наступні кроки:

  • Імпортуються необхідні пакети.
  • Набір даних Advertising.csv завантажується та очищається, а нульові значення видаляються.
  • створено масиви функцій і ціль (X andy).
  • Створені масиви розбиваються на навчальні та тестові набори. 30% набору даних потрапляє в тестовий набір, що означає, що 70% даних є набором потягів.
  • Створюється стандартний об’єкт масштабувальника.
  • X_train вставляється в масштабувальник.
  • X_train і X_test перетворюються за допомогою методу transform().
  • Створено просту модель лінійної регресії
  • В модель входять комплекти поїздів.
  • метод predict() використовується для виконання прогнозів для набору X_test.
  • Метрика mean_squared_error() використовується для оцінки моделі.

Щоб переглянути та завантажити файл CSV, використаний у цьому прикладі, натисніть тут .

Python3




# import packages> import> pandas as pd> import> numpy as np> from> sklearn.model_selection> import> train_test_split> from> sklearn.preprocessing> import> StandardScaler> from> sklearn.linear_model> import> LinearRegression> from> sklearn.metrics> import> mean_squared_error> df> => pd.read_csv(> 'Advertising.csv'> )> # dropping rows which have null values> df.dropna(inplace> => True> ,axis> => 0> )> y> => df[> 'sales'> ]> X> => df.drop(> 'sales'> ,axis> => 1> )> # splitting the dataframe into train and test sets> X_train,X_test,y_train,y_test> => train_test_split(> > X,y,test_size> => 0.3> ,random_state> => 101> )> scaler> => StandardScaler()> scaler.fit(X_train)> X_train> => scaler.transform(X_train)> X_test> => scaler.transform(X_test)> model> => LinearRegression().fit(X_train,y_train)> y_pred> => model.predict(X_test)> print> (y_pred)> print> (mean_squared_error(y_test,y_pred))>

Вихід:

масив ([19.82000933, 14.23636718, 12.80417236, 7.75461569, 8.31672266,

15.4001915, 11.6590983, 15.22650923, 15.53524916, 19.46415132,

17.21364106, 16.69603229, 16.46449309, 10.15345178, 13.44695953,

24.71946196, 18.67190453, 15.85505154, 14.45450049, 9.91684409,

10.41647177, 4.61335238, 17.41531451, 17.31014955, 21.72288151,

5.87934089, 11.29101265, 17.88733657, 21.04225992, 12.32251227,

14.4099317, 15.05829814, 10.2105313, 7.28532072, 12.66133397,

23.25847491, 18.87101505, 4.55545854, 19.79603707, 9.21203026,

10.24668718, 8.96989469, 13.33515217, 20.69532628, 12.17013119,

21.69572633, 16.7346457, 22.16358256, 5.34163764, 20.43470231,

7.58252563, 23.38775769, 10.2270323, 12.33473902, 24.10480458,

9.88919804, 21.7781076 ])

2,7506859249500466

приклад:

У цьому прикладі ми будемо використовувати модель класифікатора K-найближчих сусідів.

У цьому прикладі виконуються наступні кроки:

  • Імпортуються необхідні пакети.
  • дані райдужної оболонки завантажуються з sklearn.datasets.
  • створено масиви функцій і ціль (X andy).
  • Створені масиви розбиваються на навчальні та тестові набори. 30% набору даних потрапляє в тестовий набір, що означає, що 70% даних є набором потягів.
  • Базова модель Knn створюється за допомогою класу KNeighborsClassifier.
  • Комплекти шлейфів підходять до моделі knn.
  • метод predict() використовується для виконання прогнозів для набору X_test.

Python3




# Import packages> from> sklearn.neighbors> import> KNeighborsClassifier> from> sklearn.model_selection> import> train_test_split> from> sklearn.datasets> import> load_iris> > # Load the data> irisData> => load_iris()> > # Create feature and target arrays> X> => irisData.data> y> => irisData.target> > # Split data into train and test sets> X_train, X_test, y_train, y_test> => train_test_split(> > X, y, test_size> => 0.2> , random_state> => 42> )> > knn> => KNeighborsClassifier(n_neighbors> => 1> )> > knn.fit(X_train, y_train)> > # predicting on the X_test data set> print> (knn.predict(X_test))>

Вихід:

[1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]