makecdiscr

Создайте классификатор дискриминантного анализа из параметров

Синтаксис

cobj = makecdiscr(Mu,Sigma)
cobj = makecdiscr(Mu,Sigma,Name,Value)

Описание

пример

cobj = makecdiscr(Mu,Sigma) создает компактный классификатор дискриминантного анализа из средних значений класса Mu и ковариационная матрица Sigma.

пример

cobj = makecdiscr(Mu,Sigma,Name,Value) создает компактный классификатор с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно задать стоимость misclassification или априорных вероятностей для каждого класса.

Примеры

свернуть все

Создайте компактный классификатор линейного дискриминантного анализа из средних значений и ковариаций ирисовых данных Фишера.

load fisheriris
mu(1,:) = mean(meas(1:50,:));
mu(2,:) = mean(meas(51:100,:));
mu(3,:) = mean(meas(101:150,:));

mm1 = repmat(mu(1,:),50,1);
mm2 = repmat(mu(2,:),50,1);
mm3 = repmat(mu(3,:),50,1);
cc = meas;
cc(1:50,:) = cc(1:50,:) - mm1;
cc(51:100,:) = cc(51:100,:) - mm2;
cc(101:150,:) = cc(101:150,:) - mm3;
sigstar = cc' * cc / 147; % unbiased estimator of sigma
cpct = makecdiscr(mu,sigstar,...
   'ClassNames',{'setosa','versicolor','virginica'})
cpct = 
  classreg.learning.classif.CompactClassificationDiscriminant
           PredictorNames: {'x1'  'x2'  'x3'  'x4'}
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
              DiscrimType: 'linear'
                       Mu: [3x4 double]
                   Coeffs: [3x3 struct]


  Properties, Methods

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

свернуть все

Средние значения класса, заданные как K-by-p матрица средних значений класса скалярных значений размера. K является количеством классов, и p является количеством предикторов. Каждая строка Mu представляет среднее значение многомерного нормального распределения соответствующего класса. Индексы класса находятся в атрибуте ClassNames.

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

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

  • Для линейного дискриминанта Sigma является симметричной, положительной полуопределенной матрицей размера p-by-p, где p является количеством предикторов.

  • Для квадратичного дискриминанта Sigma является массивом размера p-by-p-by-K, где K является количеством классов. Для каждого i Sigma(:,:,i) является симметричной, положительной полуопределенной матрицей.

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

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

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

Пример: 'ClassNames',{'setosa' 'versicolor' 'virginica'} задает классификатор дискриминантного анализа, который использует 'setosa', 'versicolor' и 'virginica' как группирующие переменные.

Имена классов столь же упорядочены в Mu, заданном как пара, разделенная запятой, состоящая из 'ClassNames' и массива, содержащего группирующие переменные. Используйте любой тип данных для группирующей переменной, включая числовой вектор, категориальный вектор, логический вектор, символьный массив, массив строк или массив ячеек из символьных векторов.

Значением по умолчанию является 1:K, где K является количеством классов (количество строк Mu).

Пример: 'ClassNames',{'setosa' 'versicolor' 'virginica'}

Типы данных: single | double | logical | char | string | cell

Стоимость misclassification, заданного как пара, разделенная запятой, состоящая из 'Cost' и квадратной матрицы, где Cost(i,j) является стоимостью классификации точки в класс j, если его истинным классом является i. Также Cost может быть структурой S, имеющий два поля: S.ClassNames, содержащий названия группы как переменная того же типа как y и S.ClassificationCosts, содержащий матрицу стоимости.

Значением по умолчанию является Cost(i,j)=1 если i~=j и Cost(i,j)=0 если i=j.

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

Имена переменной прогноза, заданные как пара, разделенная запятой, состоящая из 'PredictorNames' и массива строк или массива ячеек из символьных векторов, содержащего имена для переменных прогноза, в порядке, в котором они появляются в X.

Типы данных: string | cell

Априорные вероятности для каждого класса, заданного как пара, разделенная запятой, состоящая из 'Prior' и одно из следующего:

  • 'uniform', означая все априорные вероятности класса равен

  • Вектор, содержащий одно скалярное значение для каждого класса

  • Структура S с двумя полями:

    • S.ClassNames, содержащий имена классов как переменная того же типа как ClassNames

    • S.ClassProbs, содержащий вектор соответствующих вероятностей

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

Имя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки, содержащего имя переменной отклика y.

Пример: 'ResponseName','Response'

Типы данных: char | string

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

свернуть все

Классификатор дискриминантного анализа, возвращенный как объект классификатора дискриминантного анализа класса CompactClassificationDiscriminant. Можно использовать метод predict, чтобы предсказать метки классификации для новых данных.

Советы

  • Можно изменить дискриминантный тип с помощью записи через точку после построения cobj:

    cobj.DiscrimType = 'discrimType'

    где discrimType является одним из 'linear', 'quadratic', 'diagLinear', 'diagQuadratic', 'pseudoLinear' или 'pseudoQuadratic'. Вы можете измениться между линейными типами или между квадратичными типами, но не можете измениться между линейным и квадратичным типом.

  • cobj является линейным классификатором, когда Sigma является матрицей. cobj является квадратичным классификатором, когда Sigma является 3D массивом.

Введенный в R2014a