classperf

Оцените производительность классификатора

Синтаксис

classperf
cp = classperf(groundTruth)
cp = classperf(groundTruth,classifierOutput)
classperf(cp,classifierOutput)
classperf(cp,classifierOutput,testIdx)
classperf(___,Name,Value)

Описание

classperf без входных параметров отображает свойства объекта classperformance. Для получения дополнительной информации см. 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-nearest. Перекрестный подтвердите времена модели 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. Для получения дополнительной информации см. classperformance Свойства.

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

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

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

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

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

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

Представлено до R2006a