crossval

Класс: ClassificationNaiveBayes

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

Синтаксис

CVMdl = crossval(Mdl)
CVMdl = crossval(Mdl,Name,Value)

Описание

пример

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

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

пример

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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-by-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'.

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