crossval

Класс: ClassificationNaiveBayes

Перекрестный подтвержденный наивный классификатор Байеса

Описание

пример

CVMdl = crossval(Mdl) возвращает разделенный наивный классификатор Байеса (CVSMdl) от обученного наивного классификатора Байеса (Mdl).

По умолчанию, crossval использует 10-кратную перекрестную проверку на обучающих данных, чтобы создать CVMdl.

пример

CVMdl = crossval(Mdl,Name,Value) возвращает разделенный наивный классификатор Байеса с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы.

Например, можно задать демонстрационную пропорцию затяжки.

Входные параметры

развернуть все

Полностью обученный наивный классификатор Байеса в виде ClassificationNaiveBayes модель обучена fitcnb.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Раздел перекрестной проверки в виде разделенной запятой пары, состоящей из 'CVPartition' и cvpartition объект раздела создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.

Часть данных, используемых в валидации затяжки в виде разделенной запятой пары, состоящей из 'Holdout' и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте p*100% из данных как данные о валидации, и обучают модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Holdout',0.1

Типы данных: double | single

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде разделенной запятой пары, состоящей из 'KFold' и положительное целочисленное значение, больше, чем 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в k наборы.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в ячейках k- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'KFold',5

Типы данных: single | double

Флаг перекрестной проверки "Пропускает один" в виде разделенной запятой пары, состоящей из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations свойство модели), программное обеспечение завершает эти шаги:

  1. Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Leaveout','on'

Выходные аргументы

развернуть все

Перекрестный подтвержденный наивный классификатор Байеса, возвращенный как ClassificationPartitionedModel модель.

Примеры

развернуть все

Загрузите ionosphere набор данных.

load ionosphere
X = X(:,3:end); % Remove first two predictors for stability
rng(1);         % For reproducibility

Обучите наивный классификатор Байеса. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку.

Mdl = fitcnb(X,Y,'ClassNames',{'b','g'});

Mdl обученный ClassificationNaiveBayes классификатор. 'b' отрицательный класс и 'g' положительный класс.

Крест подтверждает классификатор с помощью 10-кратной перекрестной проверки.

CVMdl = crossval(Mdl)
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'NaiveBayes'
         PredictorNames: {1x32 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

FirstModel = CVMdl.Trained{1}
FirstModel = 
  classreg.learning.classif.CompactClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'b'  'g'}
            ScoreTransform: 'none'
         DistributionNames: {1x32 cell}
    DistributionParameters: {2x32 cell}


  Properties, Methods

CVMdl ClassificationPartitionedModel перекрестный подтвержденный классификатор. Программное обеспечение:

  1. Случайным образом делит данные в 10, одинаково измеренные наборы.

  2. Обучает наивный классификатор Байеса на девяти из наборов.

  3. Шаги 1 и 2 повторений k = 10 раз. Это исключает один раздел каждый раз и обучается на других девяти разделах.

  4. Статистика обобщения объединений для каждого сгиба.

FirstModel является первым из 10 обученных классификаторов. Это - CompactClassificationNaiveBayes модель.

Можно оценить ошибку обобщения путем передачи CVMdl к kfoldLoss.

По умолчанию, crossval использует 10-кратную перекрестную проверку, чтобы пересечься, подтверждают наивный классификатор Байеса. У вас есть несколько других опций, таких как определение различного количества сгибов или демонстрационной затяжкой пропорции. В этом примере показано, как задать демонстрационную затяжкой пропорцию.

Загрузите ionosphere набор данных.

load ionosphere
X = X(:,3:end); % Remove first two predictors for stability
rng(1);         % For reproducibility

Обучите наивный классификатор Байеса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку. Это - хорошая практика, чтобы задать порядок класса.

Mdl = fitcnb(X,Y,'ClassNames',{'b','g'});

Mdl обученный ClassificationNaiveBayes классификатор. 'b' отрицательный класс и 'g' положительный класс.

Крест подтверждает классификатор путем определения 30%-й выборки затяжки.

CVMdl = crossval(Mdl,'Holdout',0.30)
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'NaiveBayes'
         PredictorNames: {1x32 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 1
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

TrainedModel = CVMdl.Trained{1}
TrainedModel = 
  classreg.learning.classif.CompactClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'b'  'g'}
            ScoreTransform: 'none'
         DistributionNames: {1x32 cell}
    DistributionParameters: {2x32 cell}


  Properties, Methods

CVMdl ClassificationPartitionedModel. TrainedModel CompactClassificationNaiveBayes классификатор, обученный с помощью 70% данных.

Оцените ошибку обобщения.

kfoldLoss(CVMdl)
ans = 0.2571

misclassification ошибка из выборки составляет приблизительно 2,6%.

Советы

Оцените прогнозирующую производительность Mdl на перекрестных подтвержденных данных с помощью функции “kfold” и свойств CVMdl, такой как kfoldLoss.

Альтернативы

Вместо того, чтобы создать наивный классификатор Байеса, сопровождаемый классификатором перекрестной проверки, создайте перекрестный подтвержденный классификатор непосредственно с помощью fitcnb и путем определения любого из этих аргументов пары "имя-значение": 'CrossVal', 'CVPartition', 'Holdout', 'Leaveout', или 'KFold'.