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'.

Для просмотра документации необходимо авторизоваться на сайте