Рубрики
Без рубрики

К-разрядочная проверка в Python с использованием Sklearn

Если заданная модель не работает хорошо на установленном наборе проверки, то он будет работать хуже при работе с реальными живыми данными. Это понятие составляет

Автор оригинала: Pankaj Kumar.

Разделение набора данных на набор тренировок и тестирования – это важная и основная задача, когда приходит к получению модели обучения машины для обучения. Чтобы определить, является ли наша модель перенапряжена или нет, нам нужно проверить ее на невидимых данных (набор валидации).

Если заданная модель не работает хорошо на установленном наборе проверки, то он будет работать хуже при работе с реальными живыми данными. Это понятие делает перекрестную проверку, вероятно, одним из самых важных концепций машинного обучения, которая обеспечивает устойчивость нашей модели.

Перекрестная проверка – это просто способ, который просто оставляет за собой часть данных из набора данных и использует его для тестирования модели (набор валидации), а остальные данные, отличные от зарезервированного, используется для обучения модели.

В этой статье мы реализуем перекрестную проверку, предусмотренную SCI-KIT. Мы реализуем кросс-подтверждение K-Fold.

Интуиция по перекрестности

Давайте сначала посмотрим, почему мы должны использовать перекрестную проверку Отказ

  • Это помогает нам с оценкой модели, наконец, определение качества модели.
  • Решающее значение для определения, если модель хорошо обобщает данные.
  • Чтобы проверить, является ли модель переоборудной или недостаточности.
  • Наконец, он позволяет нам выбрать модель, которая имела лучшую производительность.

Существует много типов поперечных методик проверки:

  • Оставьте одну перекрестную проверку
  • К-раз поперечной проверки
  • Стратифицированная к-сложная перекрестная проверка
  • Перекрестная проверка серии временных рядов

Реализация кросс-подтверждения K-Fold

Набор данных разделен на «k» Количество подмножеств, подмножества K-1, которые затем используются для обучения модели, и последнее подмножество хранится в качестве проверки, установленного для проверки модели. Затем оценка модели на каждой раке усредняется для оценки производительности модели.

5-кратное перекрестие

K-Fold Cross Vavelation, используя Scikit

#Importing required libraries
from sklearn.datasets import load_breast_cancer
import pandas as pd
from sklearn.model_selection import KFold 
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

#Loading the dataset
data = load_breast_cancer(as_frame = True)
df = data.frame
X = df.iloc[:,:-1]
y = df.iloc[:,-1]

#Implementing cross validation

k = 5
kf = KFold(n_splits=k, random_state=None)
model = LogisticRegression(solver= 'liblinear')

acc_score = []

for train_index , test_index in kf.split(X):
    X_train , X_test = X.iloc[train_index,:],X.iloc[test_index,:]
    y_train , y_test = y[train_index] , y[test_index]
    
    model.fit(X_train,y_train)
    pred_values = model.predict(X_test)
    
    acc = accuracy_score(pred_values , y_test)
    acc_score.append(acc)
    
avg_acc_score = sum(acc_score)/k

print('accuracy of each fold - {}'.format(acc_score))
print('Avg accuracy : {}'.format(avg_acc_score))
accuracy of each fold - [0.9122807017543859, 0.9473684210526315, 0.9736842105263158, 0.9736842105263158, 0.9557522123893806]
Avg accuracy : 0.952553951249806 

В коде выше мы реализовали 5-кратную перекрестную проверку.

Модуль Sklearn.model_selection предоставляет нам класс Kfld, который облегчает реализацию кросс-проверки. Клыко Класс имеет Сплит Метод, который требует набора данных для выполнения перекрестной проверки в качестве входного аргумента.

Мы выполнили бинарную классификацию, используя логистическую регрессию, так как наша модель и перекрестная проверка его, используя 5-кратную перекрестную проверку. Средняя точность нашей модели составила примерно 95,25%

Не стесняйтесь проверить Sklearn Kfold Documentation здесь Отказ

Перекрестная проверка с использованием Cross_Val_Score ()

Вы можете сократить вышеуказанный код, используя cross_val_score Метод класса от Sklearn.model_selection модуль.

from sklearn.datasets import load_breast_cancer
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold


data = load_breast_cancer(as_frame = True)
df = data.frame
X = df.iloc[:,:-1]
y = df.iloc[:,-1]

k = 5
kf = model_selection.KFold(n_splits=k, random_state=None)
model = LogisticRegression(solver= 'liblinear')

result = cross_val_score(model , X, y, cv = kf)

print("Avg accuracy: {}".format(result.mean()))
Avg accuracy: 0.952553951249806

Результаты обоих кодов одинаковы.

cross_val_score Класс требует модели, набора набора, этикеток и метод перекрестного варианта в качестве аргумента ввода. Вы можете узнать больше о его функциональности и методах здесь Отказ

Я надеюсь, что до сих пор вы, возможно, получили идею о перекрестной проверке.

Важное практическое значение использования кросс-подтверждения означает, что нам потребуется больше вычислительных ресурсов, поскольку модель обучается и проверена на разных складках данных, K количество раз.

Заключение

В этой статье мы пытались получить некоторую интуицию за перекрестной проверкой и ее работой. Мы реализовали наиболее часто используемую кросс-проверку K-Fold, используя Sklearn.

Счастливое обучение!