classperf

Оцените эффективность классификатора

Описание

classperf без входных параметров отображает свойства classperformance объект. Для получения дополнительной информации см. Свойства соответствия классам.

пример

cp = classperf(groundTruth) создает пустой classperformance cp объекта использование истинных меток groundTruth для каждого наблюдения в наборе данных.

cp = classperf(groundTruth,classifierOutput) создает classperformance cp объекта использование истинных меток groundTruth, а затем обновляет свойства объекта на основе результатов работы классификатора classifierOutput. Используйте этот синтаксис, когда необходимо знать эффективность классификатора при одном запуске валидации.

пример

classperf(cp,classifierOutput) обновляет classperformance cp объекта с результатами работы классификатора classifierOutput. Используйте этот синтаксис для итерационного обновления эффективности классификатора, например, внутри for цикл для нескольких запусков перекрестной проверки.

пример

classperf(cp,classifierOutput,testIdx) использует testIdx сравнить результаты классификатора с истинными метками и обновить объект cp. testIdx представляет подмножество истинных меток (основная истина) в текущей валидации.

classperf(___,Name,Value) задает дополнительные опции с одним или несколькими Name,Value аргументы в виде пар. Задайте эти опции после всех других входных параметров.

Примеры

свернуть все

Создайте индексы для 10-кратной перекрестной валидации и классифицируйте данные измерений для набора данных радужной оболочки глаза Фишера. Набор данных по ирису Фишера содержит измерения ширины и длины лепестков и чашелистиков трех видов ирисов.

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

load fisheriris

Создайте индексы для 10-кратной перекрестной проверки.

indices = crossvalind('Kfold',species,10);

Инициализируйте объект, чтобы измерить эффективность классификатора.

cp = classperf(species);

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

for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
cp.ErrorRate
ans = 0.0200

Предположим, что вы хотите использовать данные наблюдений из setosa и virginica вид только и исключить versicolor виды из перекрестной валидации.

labels = {'setosa','virginica'};
indices = crossvalind('Kfold',species,10,'Classes',labels);

indices теперь содержит нули для строк, которые относятся к versicolor вид.

Выполните классификацию еще раз.

for i = 1:10
    test = (indices == i); 
    train = ~test;
    class = classify(meas(test,:),meas(train,:),species(train,:));
    classperf(cp,class,test);
end
cp.ErrorRate
ans = 0.0160

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

load fisheriris
X = meas;
Y = species;

X является числовой матрицей, которая содержит четыре измерения лепестков для 150 ирисов. Y содержит истинные имена классов (меток) соответствующих видов радужной оболочки глаза.

Инициализируйте classperformance объект с использованием истинных меток.

cp = classperf(Y)
                        Label: ''
                  Description: ''
                  ClassLabels: {3x1 cell}
                  GroundTruth: [150x1 double]
         NumberOfObservations: 150
               ControlClasses: [2x1 double]
                TargetClasses: 1
            ValidationCounter: 0
           SampleDistribution: [150x1 double]
            ErrorDistribution: [150x1 double]
    SampleDistributionByClass: [3x1 double]
     ErrorDistributionByClass: [3x1 double]
               CountingMatrix: [4x3 double]
                  CorrectRate: NaN
                    ErrorRate: NaN
              LastCorrectRate: 0
                LastErrorRate: 0
             InconclusiveRate: NaN
               ClassifiedRate: NaN
                  Sensitivity: NaN
                  Specificity: NaN
      PositivePredictiveValue: NaN
      NegativePredictiveValue: NaN
           PositiveLikelihood: NaN
           NegativeLikelihood: NaN
                   Prevalence: NaN
              DiagnosticTable: [2x2 double]

Выполните классификацию с помощью k-ближайших соседей классификатора. Перекрестная валидация модели 10 раз с использованием 145 выборок в качестве набора обучающих данных и 5 выборок в качестве тестового набора. После каждого прогона перекрестной проверки обновляйте объект эффективности классификатора с помощью результатов.

for i = 1:10
    [train,test] = crossvalind('LeaveMOut',Y,5);
    mdl = fitcknn(X(train,:),Y(train),'NumNeighbors',3);
    predictions = predict(mdl,X(test,:));
    classperf(cp,predictions,test);
end

Сообщите об ошибке классификации, которая является отношением количества неправильно классифицированных выборок, разделенным на общее количество классифицированных выборок.

cp.ErrorRate
ans = 0.0467

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

свернуть все

Истинные метки для всех наблюдений в наборе данных, заданные как вектор из целых чисел, логического вектора, строкового вектора или массива ячеек векторов символов.

Результаты классификации из классификатора, заданные как вектор из целых чисел, логического вектора, строкового вектора или массива ячеек векторов символов. Когда classifierOutput - массив ячеек из векторов символов или строкового вектора, пустой символьный вектор или строка представляет неубедительный результат. Для вектора целых чисел, NaN представляет собой неубедительный результат.

  • Если вы не задаете testIdx, classifierOutput должен быть такого же размера и типа данных, как и groundTruth.

  • Если вы задаете testIdx как вектор целых чисел, classifierOutput должно иметь то же количество элементов, что и testIdx. Если testIdx - логический вектор, количество элементов в classifierOutput должен равняться sum(testIdx).

Информация о эффективности классификатора, заданная как classperformance объект. Для получения дополнительной информации смотрите Свойства соответствия классам.

Подмножество истинных меток (groundTruth), заданный как вектор из целых чисел или логического вектора. The testIdx аргумент указывает подмножество истинных меток (из тестового набора). Функция использует testIdx в качестве вектора индекса для получения подмножества меток из groundTruth, таких как groundTruth(testIdx).

  • Если testIdx является логическим вектором, его длина должна равняться общему количеству наблюдений (cp.NumberOfObservations).

  • Если testIdx является вектором целых чисел, не может содержать повторяющихся целых чисел, и каждое целое число должно быть больше 0 но меньше или равен общему количеству наблюдений.

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

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

Пример: cp = classperf(groundTruth,classifierOutput,'Positive',[1 2 3]) задает метки для целевых (больных) классов.

Метки для целевых классов, заданные как разделенная разделенными запятой парами, состоящая из 'Positive' и вектор из целых чисел, логического вектора, строкового вектора или массива ячеек из векторов символов.

  • Если groundTruth является вектором целых чисел, положительной метки и отрицательной метки (задается как 'Negative' Аргументы пары "имя-значение") должны быть векторами целых чисел.

  • Если groundTruth является строковым вектором или массивом ячеек из векторов символов, положительной меткой и отрицательной меткой могут быть строковые векторы, массивы ячеек из векторов символов или векторы из положительных целых чисел. Записи должны быть подмножеством grp2idx(groundTruth).

По умолчанию положительная метка соответствует первому классу, возвращаемому grp2idx(groundTruth) и отрицательная метка соответствует всем остальным классам.

Функция использует положительную метку, чтобы задать TargetClasses свойство cp объект.

Положительные и отрицательные метки являются несвязанными подмножествами unique(groundTruth). Например, предположим, что у вас есть набор данных, который содержит данные от шести пациентов. У пяти пациентов рак яичников, легких, простаты, кожи или мозга, и у одного пациента нет рака. Затем ClassLabels = {'Ovarian', 'Lung', 'Prostate', 'Skin', 'Brain', 'Healthy'}. Вы можете протестировать классификатор на рак легких, только установив положительную метку равной [2] и отрицательную метку, которая будет [1 3 4 5 6]. Кроме того, вы можете проверить на любой тип рака, установив положительную метку [1 2 3 4 5] и отрицательную метку, которая будет [6].

В клинических тестах функция отсчитывает неубедительные значения (пустой символьный вектор '' или NaN) как ложные срабатывания для вычисления специфичности и как ложные срабатывания для вычисления чувствительности. Доза функции не учитывает какое-либо проверенное наблюдение с его истинным классом, не входящим в объединение положительной метки и отрицательной метки. Однако, если истинный класс проверенного наблюдения находится в пределах объединения, но его предсказанный класс не покрывается groundTruthфункция считает это наблюдение неубедительным.

Пример: 'Positive',[1 2]

Метки для классов управления, заданные как разделенная разделенными запятой парами, состоящая из 'Negative' и вектор из целых чисел, логического вектора, строкового вектора или массива ячеек из векторов символов.

  • Если groundTruth является вектором целых чисел, положительной метки и отрицательной метки (задается как 'Negative' Аргументы пары "имя-значение") должны быть векторами целых чисел.

  • Если groundTruth является строковым вектором или массивом ячеек из векторов символов, положительной меткой и отрицательной меткой могут быть строковые векторы, массивы ячеек из векторов символов или векторы из положительных целых чисел. Записи должны быть подмножеством grp2idx(groundTruth).

По умолчанию положительная метка соответствует первому классу, возвращаемому grp2idx(groundTruth) и отрицательная метка соответствует всем остальным классам.

Функция использует отрицательную метку, чтобы задать ControlClasses свойство cp объект. Для получения дополнительной информации о том, как функция использует положительные и отрицательные метки, смотрите 'Positive'.

Пример: 'Negative',[3]

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