Это седьмой день моего участия в ноябрьском испытании обновлений, подробности о мероприятии:Вызов последнего обновления 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