edge

Ребро классификации для наивных классификаторов Байеса

Описание

пример

e = edge(Mdl,tbl,ResponseVarName) возвращает ребро классификации (e) для наивного классификатора Байеса Mdl использование данных о предикторе в таблице tbl и класс помечает в tbl.ResponseVarName.

пример

e = edge(Mdl,tbl,Y) возвращает ребро классификации (e) для наивного классификатора Байеса Mdl использование данных о предикторе в таблице tbl и класс помечает в векторном Y.

пример

e = edge(Mdl,X,Y) возвращает ребро классификации (e) для наивного классификатора Байеса Mdl использование данных о предикторе X и класс маркирует Y.

пример

e = edge(___,Name,Value) вычисляет ребро классификации с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы, с помощью любого из предыдущих синтаксисов.

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

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

Наивный классификатор Байеса, заданный как ClassificationNaiveBayes модель или CompactClassificationNaiveBayes модель возвращена fitcnb или compact, соответственно.

Выборочные данные, заданные как таблица. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, tbl может содержать дополнительные столбцы для весов наблюдения и переменной отклика. tbl должен содержать все предикторы, используемые, чтобы обучить Mdl. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

Если вы обучили Mdl использование выборочных данных содержится в table, затем входные данные для этого метода должны также быть в таблице.

Типы данных: table

Имя переменной отклика, заданное как имя переменной в tbl.

Необходимо задать ResponseVarName как вектор символов или скаляр строки. Например, если переменная отклика y хранится как tbl.y, затем задайте его как 'y'. В противном случае программное обеспечение обрабатывает все столбцы tbl, включая y, как предикторы, когда обучение модель.

Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

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

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

Каждая строка X соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию). Переменные, составляющие столбцы X должен совпасть с переменными, которые обучили Mdl.

Длина Y и количество строк X должно быть равным.

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

Метки класса, заданные как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. Y должен совпасть с типом данных Mdl.ClassNames. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Длина Y и количество строк tbl или X должно быть равным.

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

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

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

Веса наблюдения, заданные как разделенная запятой пара, состоящая из 'Weights' и числовой вектор или имя переменной в tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или tbl с соответствующим весом в Weights.

Если вы задаете Weights как вектор, затем размер Weights должно быть равно количеству строк X или tbl.

Если вы задаете Weights как имя переменной в tbl, необходимо сделать так как вектор символов или представить скаляр в виде строки. Например, если веса хранятся как tbl.w, затем задайте Weights как 'w'. В противном случае программное обеспечение обрабатывает все столбцы tbl, включая tbl.w, как предикторы.

Если вы не задаете свою собственную функцию потерь, то программное обеспечение нормирует Weights составить в целом 1.

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

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

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

Ребро классификации, возвращенное как скаляр. Если вы предоставляете Weights, затем e взвешенное ребро классификации.

Примеры

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

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);      % For reproducibility

Обучите наивный классификатор Байеса. Задайте 30%-ю выборку затяжки для тестирования. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку.

CVMdl = fitcnb(X,Y,'Holdout',0.30,...
    'ClassNames',{'setosa','versicolor','virginica'});
CMdl = CVMdl.Trained{1};          % Extract trained, compact classifier
testInds = test(CVMdl.Partition); % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdl ClassificationPartitionedModel классификатор. Это содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationNaiveBayes классификатор, что программное обеспечение обучило использование набора обучающих данных.

Оцените тестовое демонстрационное ребро.

e = edge(CMdl,XTest,YTest)
e = 0.8244

Предполагаемым тестовым демонстрационным средним значением поля является приблизительно 0.82. Это указывает, что в среднем тестовое демонстрационное различие между предполагаемой апостериорной вероятностью для предсказанного класса и апостериорной вероятностью для класса со следующей самой низкой апостериорной вероятностью - приблизительно 0,82. Это указывает, что классификатор помечает высокой уверенностью.

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

Предположим, что ирисовые измерения setosa являются более низким качеством, потому что они были измерены с более старой технологией. Один способ включить это состоит в том, чтобы взвесить ирисовые измерения setosa меньше, чем другие наблюдения.

Задайте вектор веса, который взвешивает лучшие качественные наблюдения дважды другие наблюдения.

n = size(X,1);
idx = strcmp(Y,'setosa');
weights = ones(size(X,1),1);
weights(idx) = 0.5;

Обучите наивный классификатор Байеса. Задайте схему взвешивания и 30%-ю выборку затяжки для тестирования. Это - хорошая практика, чтобы задать порядок класса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку.

CVMdl = fitcnb(X,Y,'Weights',weights,'Holdout',0.30,...
    'ClassNames',{'setosa','versicolor','virginica'});
CMdl = CVMdl.Trained{1};          % Extract trained, compact classifier
testInds = test(CVMdl.Partition); % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);
wTest = weights(testInds);

CVMdl ClassificationPartitionedModel классификатор. Это содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationNaiveBayes классификатор, что программное обеспечение обучило использование набора обучающих данных.

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

e = edge(CMdl,XTest,YTest,'Weights',wTest)
e = 0.7893

Тестовое демонстрационное поле взвешенного среднего - приблизительно 0,79. Это указывает, что в среднем тестовое демонстрационное различие между предполагаемой апостериорной вероятностью для предсказанного класса и апостериорной вероятностью для класса со следующей самой низкой апостериорной вероятностью - приблизительно 0,79. Это указывает, что классификатор помечает высокой уверенностью.

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

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

Разделите набор данных в наборы обучающих данных и наборы тестов. Задайте 30%-ю выборку затяжки для тестирования.

Partition = cvpartition(Y,'Holdout',0.30);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds,:);

Partition задает раздел набора данных.

Задайте эти два набора данных:

  • fullX содержит все предикторы.

  • partX содержит последние два предиктора.

fullX = X;
partX = X(:,3:4);

Обучите наивные классификаторы Байеса каждому набору предиктора. Задайте определение раздела.

FCVMdl = fitcnb(fullX,Y,'CVPartition',Partition);
PCVMdl = fitcnb(partX,Y,'CVPartition',Partition);
FCMdl = FCVMdl.Trained{1};
PCMdl = PCVMdl.Trained{1};

FCVMdl и PCVMdl ClassificationPartitionedModel классификаторы. Они содержат свойство Trained, который является массивом ячеек 1 на 1, содержащим CompactClassificationNaiveBayes классификатор, что программное обеспечение обучило использование набора обучающих данных.

Оцените тестовое демонстрационное ребро для каждого классификатора.

fullEdge = edge(FCMdl,XTest,YTest)
fullEdge = 0.8244
partEdge = edge(PCMdl,XTest(:,3:4),YTest)
partEdge = 0.8420

Демонстрационные тестом ребра классификаторов являются почти тем же самым. Однако модель, обученная с помощью двух предикторов (PCMdl) является менее комплексным.

Больше о

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

Расширенные возможности