Метод оценки модели машинного обучения от вступления до реального боя [3]

машинное обучение

Это седьмой день моего участия в ноябрьском испытании обновлений, подробности о мероприятии:Вызов последнего обновления 2021 г.

Прежде чем говорить о том, как использовать перекрестную проверкуРазделение набора данных. Когда мы используем метод перекрестной проверки и комбинируем некоторые показатели производительности для оценки качества модели, мы можем напрямую использовать предоставленный sklearn.Метод перекрестной проверки, эти методы следующие:

Оценка модели с использованием перекрестной проверки

1 cross_value_score

from sklearn.naive_bayes import GaussianNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import RepeatedKFold
​
#这里省略了数据集的处理代码
​
# 算法实例化
clf = GaussianNB()
​
# 交叉验证法验证模型
kf = RepeatedKFold(n_splits=10, n_repeats=10, random_state=0)
print(cross_val_score(clf, x_vec, y_vec, n_jobs=-1, cv=kf))
имя параметра значение
estimator Объект метода оценки (классификатор), т. е. экземпляр алгоритма классификации, clf выше
X Характеристики данных (Features), указанные выше x_vec
y Метки данных (Labels), y_vec выше
scoring Методы вызова (включая точность и mean_squared_error и т. д.)
cv Введите целое число K, чтобы вызвать перекрестную проверку KFold по умолчанию, которую также можно настроить, как указано выше.
n_jobs Количество ЦП, работающих одновременно (-1 означает все)

2 cross_validate

метод cross_validateВ принципе, это можно понимать какcross_validate_score позволяет передавать несколько методов подсчета очков, его параметр скоринга может получать метод скоринга, который вы передаете в виде списка или словаря;

параметр инструкция
estimator объект оценки, реализующий «подгонку»Объект, используемый для соответствия данным.
X array-like of shape (n_samples, n_features)данные, используемые для подгонки. Например, это может быть список или массив.
y array-like of shape (n_samples,) or (n_samples, n_outputs), default=NoneЦелевая переменная, которую нужно попытаться предсказать в случае контролируемого обучения.
groups array-like of shape (n_samples,), default=NoneГрупповая метка выборок, используемая при разделении набора данных на обучающие или тестовые наборы. Работает только с "Группой"cvэкземпляр (напр.GroupKFold)В сочетании с.
scoring str, callable, list/tuple, or dict, default=Noneодна ул (см.Параметры оценки: определение правил оценки модели) или вызываемый (см.Определение политики скоринга из метрической функции) используется для оценки прогнозов на тестовом наборе. Чтобы оценить несколько метрик, предоставьте (уникальный) список строк или словарь с именами в качестве ключей и вызываемыми объектами в качестве значений. Обратите внимание, что при использовании настраиваемых счетчиков каждый счетчик должен возвращать значение. Функция метрики, возвращающая список или массив значений, может быть заключена в несколько счетчиков, каждый из которых возвращает значение. Для примера см.Укажите несколько показателей для оценки. Если нет, используется метод оценки оценщика.
cv int, cross-validation generator or an iterable, default=NoneОпределите стратегию разделения перекрестной проверки. cv input: - Нет, используйте 5-кратную перекрестную проверку по умолчанию - int, чтобы указать(Stratified)KFoldскладывать -CV splitter, - массив итерируемых выходных разбиений (набор поездов, набор тестов) в качестве индексов для ввода int/None, если оценщик является классификатором, иyявляется бинарным или мультикатегориальным, то используйтеStratifiedKFold. Во всех остальных случаях используйтеKFold. Различные стратегии перекрестной проверки, которые можно здесь использовать, см.Гид пользователя.Изменено в версии 0.22:cvЕсли установлено значение «Нет», значение по умолчанию изменяется с скидки 30% на скидку 50%.
n_jobs int, default=NoneКоличество процессоров, используемых для выполнения вычислений.Noneесли только вjoblib.parallel_backendсреда, 1 в противном случае.-1Указывает на использование всех процессоров. Подробнее см.Глоссарий.
возвращаемое значение инструкция
scores dict of float arrays of shape (n_splits,)Массив точности оценки для каждого прогона перекрестной проверки. Возвращает словарь, содержащий массив баллов или времени для каждого оценщика. этоdictКлючи словаря могут быть:test_scoreМассив точности тестового набора для каждого разделения перекрестной проверки. Если в параметре скоринга указано несколько показателей оценки, вtest_scoreпо определенному показателю (например,test_r2илиtest_auc) добавить суффикс_score. -train_scoreМассив точности обучающего набора для каждого разделения перекрестной проверки. Если в параметре скоринга указано несколько показателей оценки, вtrain_scoreпо определенному показателю (например,train_r2илиtrain_auc) добавить суффикс_score. только еслиreturn_train_scoreпараметрTrueдоступно, когда. -fit_timeВремя, необходимое для подгонки оценщика к обучающему набору для каждого разделения перекрестной проверки. -score_timeСколько раз оценщик был оценен в наборе тестов для каждого разделения перекрестной проверки. (Обратите внимание, что даже еслиreturn_train_scoreУстановить какTrue, также без учета количества оценок на обучающей выборке) -estimatorОбъект оценки для каждого разделения перекрестной проверки. только еслиreturn_estimatorпараметр установлен наTrueдоступно, когда.

В последней версии sklearn 0.21cross_val_score и cross_validate объединены, cross_val_score просто возвращает результат словаря для вызова cross_validate.

3 cross_val_predict

Я действительно не понимаю этого здесь, просто скопируйте и вставьте это и посмотрите это позже:

cross_val_predictРезультат функции может быть таким же, какcross_val_scoreРезультат функции отличается, потому что элементы группируются по-разному в двух методах. функцияcross_val_scoreСреднее значение по всем проверенным сгибам. Однако функцияcross_val_predictОн просто возвращает метки или вероятности, предсказанные несколькими разными моделями. следовательно,cross_val_predictне является надлежащей мерой ошибки обобщения.

функцияcross_val_predictЦелесообразнее сделать следующее:

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

обновить:

Использование cross_val_predict такое же, как и cross_val_score, но после использования перекрестной проверки вместо оценки он возвращает выходное значение. Его рабочий процесс выглядит следующим образом: с использованием метода перекрестной проверки каждый раз вычисляется значение данных, разделенных на тестовый набор, зная, что все данные имеют прогнозируемое значение. Если данные разделены на [1, 2, 3, 4, 5] частей, сначала обучается модель с [1, 2, 3, 4], вычисляется целевое значение пятой части, а затем используется [1, 2, 3, 5] Рассчитайте целевое значение для 4-й акции, пока все не закончится.

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_predict
from sklearn import metrics
​
iris = load_iris()
clf = SVC(kernel='linear', C=1, random_state=0)
predicted = cross_val_predict(clf, iris.data, iris.target, cv=10)
​
print(predicted)
print(metrics.accuracy_score(predicted, iris.target))
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1
 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
​
0.9733333333333334