Обучите мультикласс наивная модель Bayes
Mdl = fitcnb(Tbl,ResponseVarName)
Mdl = fitcnb(Tbl,formula)
Mdl = fitcnb(Tbl,Y)
Mdl = fitcnb(X,Y)
Mdl = fitcnb(___,Name,Value)
возвращает мультикласс наивная модель Bayes (Mdl
= fitcnb(Tbl
,ResponseVarName
)Mdl
), обученный предикторами в таблице Tbl
и метками класса в переменной Tbl.ResponseVarName
.
возвращает наивный классификатор Байеса с дополнительными опциями, заданными одним или несколькими аргументами пары Mdl
= fitcnb(___,Name,Value
)Name,Value
, с помощью любого из предыдущих синтаксисов. Например, можно задать распределение, чтобы смоделировать данные, априорные вероятности для классов или пропускную способность окна сглаживания ядра.
Загрузите ирисовый набор данных Фишера.
load fisheriris
X = meas(:,3:4);
Y = species;
tabulate(Y)
Value Count Percent setosa 50 33.33% versicolor 50 33.33% virginica 50 33.33%
Программное обеспечение может классифицировать данные больше чем с двумя классами с помощью наивных методов Бейеса.
Обучите наивный классификатор Байеса. Это - хорошая практика, чтобы задать порядок класса.
Mdl = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal'} DistributionParameters: {3x2 cell} Properties, Methods
Mdl
является обученным классификатором ClassificationNaiveBayes
.
По умолчанию, модели ПО распределение предиктора в каждом классе с помощью Распределения Гаусса, имеющего некоторое среднее и стандартное отклонение. Используйте запись через точку, чтобы отобразить параметры конкретной Гауссовой подгонки, например, отобразить пригодное для первой функции в setosa
.
setosaIndex = strcmp(Mdl.ClassNames,'setosa');
estimates = Mdl.DistributionParameters{setosaIndex,1}
estimates = 2×1
1.4620
0.1737
Средним значением является 1.4620
, и стандартным отклонением является 0.1737
.
Постройте Гауссовы контуры.
figure gscatter(X(:,1),X(:,2),Y); h = gca; cxlim = h.XLim; cylim = h.YLim; hold on Params = cell2mat(Mdl.DistributionParameters); Mu = Params(2*(1:3)-1,1:2); % Extract the means Sigma = zeros(2,2,3); for j = 1:3 Sigma(:,:,j) = diag(Params(2*j,:)).^2; % Create diagonal covariance matrix xlim = Mu(j,1) + 4*[-1 1]*sqrt(Sigma(1,1,j)); ylim = Mu(j,2) + 4*[-1 1]*sqrt(Sigma(2,2,j)); f = @(x1,x2)reshape(mvnpdf([x1(:),x2(:)],Mu(j,:),Sigma(:,:,j)),size(x1)); fcontour(f,[xlim ylim]) % Draw contours for the multivariate normal distributions end h.XLim = cxlim; h.YLim = cylim; title('Naive Bayes Classifier -- Fisher''s Iris Data') xlabel('Petal Length (cm)') ylabel('Petal Width (cm)') legend('setosa','versicolor','virginica') hold off
Можно изменить распределение по умолчанию с помощью аргумента пары "имя-значение" 'DistributionNames'
. Например, если некоторые предикторы являются категориальными, то можно указать, что они многомерны, случайные переменные многочлена с помощью 'DistributionNames','mvmn'
.
Создайте наивный классификатор Байеса для ирисового набора данных Фишера. Кроме того, задайте априорные вероятности во время обучения.
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'}; % Class order
X
является числовой матрицей, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y
является массивом ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
По умолчанию предшествующее распределение вероятностей класса является относительной плотностью распределения классов в наборе данных, который в этом случае составляет 33% для каждой разновидности. Однако предположите, что вы знаете, что в генеральной совокупности 50% ирисовых диафрагм являются setosa, 20% являются versicolor, и 30% являются virginica. Можно включить эту информацию путем определения этого распределения как априорной вероятности во время обучения.
Обучите наивный классификатор Байеса. Задайте порядок класса и предшествующее распределение вероятностей класса.
prior = [0.5 0.2 0.3]; Mdl = fitcnb(X,Y,'ClassNames',classNames,'Prior',prior)
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl
является обученным классификатором ClassificationNaiveBayes
, и некоторые его свойства появляются в Командном окне. Программное обеспечение обрабатывает предикторы как независимые, учитывая класс, и, по умолчанию, соответствует им использующий нормальные распределения.
Наивный алгоритм Бейеса не использует предшествующие вероятности класса во время обучения. Поэтому можно задать предшествующие вероятности класса после обучения с помощью записи через точку. Например, предположите, что вы хотите видеть разницу в производительности между моделью, которая использует предшествующие вероятности класса по умолчанию и модель, которая использует prior
.
Создайте нового наивного Бейеса, основанного на модели на Mdl
, и укажите, что предшествующее распределение вероятностей класса является эмпирическим распределением класса.
defaultPriorMdl = Mdl; FreqDist = cell2table(tabulate(Y)); defaultPriorMdl.Prior = FreqDist{:,3};
Программное обеспечение нормирует предшествующие вероятности класса, чтобы суммировать к 1
.
Оцените ошибку перекрестной проверки для обеих моделей с помощью 10-кратной перекрестной проверки.
rng(1); % For reproducibility
defaultCVMdl = crossval(defaultPriorMdl);
defaultLoss = kfoldLoss(defaultCVMdl)
defaultLoss = 0.0533
CVMdl = crossval(Mdl); Loss = kfoldLoss(CVMdl)
Loss = 0.0340
Mdl
выполняет лучше, чем defaultPriorMdl
.
Загрузите ирисовый набор данных Фишера.
load fisheriris
X = meas;
Y = species;
Обучите наивный классификатор Байеса с помощью каждого предиктора. Это - хорошая практика, чтобы задать порядок класса.
Mdl1 = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'})
Mdl1 = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl1.DistributionParameters
ans = 3x4 cell array
{2x1 double} {2x1 double} {2x1 double} {2x1 double}
{2x1 double} {2x1 double} {2x1 double} {2x1 double}
{2x1 double} {2x1 double} {2x1 double} {2x1 double}
Mdl1.DistributionParameters{1,2}
ans = 2×1
3.4280
0.3791
По умолчанию, модели ПО распределение предиктора в каждом классе как Гауссово с некоторым средним и стандартным отклонением. Существует четыре предиктора и три уровня класса. Каждая ячейка в Mdl1.DistributionParameters
соответствует числовому вектору, содержащему среднее и стандартное отклонение каждого распределения, например, средним и стандартным отклонением для ирисовых ширин чашелистика setosa является 3.4280
и 0.3791
, соответственно.
Оцените матрицу беспорядка для Mdl1
.
isLabels1 = resubPredict(Mdl1); ConfusionMat1 = confusionchart(Y,isLabels1);
Элемент (j, k) матричного графика беспорядка представляет количество наблюдений, что программное обеспечение классифицирует как k, но находится действительно в классе j согласно данным.
Переобучите классификатор с помощью Распределения Гаусса для предикторов 1 и 2 (длины чашелистика и ширины), и нормальная плотность ядра по умолчанию для предикторов 3 и 4 (лепестковые длины и ширины).
Mdl2 = fitcnb(X,Y,... 'DistributionNames',{'normal','normal','kernel','kernel'},... 'ClassNames',{'setosa','versicolor','virginica'}); Mdl2.DistributionParameters{1,2}
ans = 2×1
3.4280
0.3791
Программное обеспечение не обучает параметры к плотности ядра. Скорее программное обеспечение выбирает оптимальную ширину. Однако можно задать ширину с помощью аргумента пары "имя-значение" 'Width'
.
Оцените матрицу беспорядка для Mdl2
.
isLabels2 = resubPredict(Mdl2); ConfusionMat2 = confusionchart(Y,isLabels2);
На основе матриц беспорядка эти два классификатора выполняют так же в учебной выборке.
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; Y = species; rng(1); % For reproducibility
Обучите и перекрестный подтвердите наивный классификатор Байеса с помощью перекрестной проверки k-сгиба и опций по умолчанию. Это - хорошая практика, чтобы задать порядок класса.
CVMdl1 = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'},... 'CrossVal','on');
По умолчанию, модели ПО распределение предиктора в каждом классе как Гауссово с некоторым средним и стандартным отклонением. CVMdl1
является моделью ClassificationPartitionedModel
.
Создайте наивный двоичный шаблон классификатора Бейеса по умолчанию, и обучите исправление ошибок, выведите модель мультикласса кода.
t = templateNaiveBayes(); CVMdl2 = fitcecoc(X,Y,'CrossVal','on','Learners',t);
CVMdl2
является моделью ClassificationPartitionedECOC
. Можно задать опции для наивных двоичных учеников Бейеса, использующих те же аргументы пары "имя-значение" что касается fitcnb
.
Сравните ошибку классификации k-сгибов из выборки (пропорция неправильно классифицированных наблюдений).
classErr1 = kfoldLoss(CVMdl1,'LossFun','ClassifErr')
classErr1 = 0.0533
classErr2 = kfoldLoss(CVMdl2,'LossFun','ClassifErr')
classErr2 = 0.0467
Mdl2
имеет более низкую ошибку обобщения.
Некоторые спам-фильтры классифицируют входящую электронную почту как спам на основе того, сколько раз слово или пунктуация (названный лексемами) происходят в электронном письме. Предикторы являются частотами конкретных слов или пунктуации в электронном письме. Поэтому предикторы составляют случайные переменные многочлена.
Этот пример иллюстрирует классификацию с помощью наивного Бейеса и предикторов многочлена.
Создайте данные тренировки
Предположим, что вы наблюдали 1 000 электронных писем и классифицировали их как спам или не спам. Сделайте это путем случайного присвоения-1 или 1 к y
для каждой электронной почты.
n = 1000; % Sample size rng(1); % For reproducibility Y = randsample([-1 1],n,true); % Random labels
Чтобы создать данные о предикторе, предположите, что существует пять лексем в словаре и 20 наблюдаемых лексем на электронную почту. Сгенерируйте данные о предикторе из этих пяти лексем путем рисования случайный, многочлен отклоняется. Относительные частоты для лексем, соответствующих спаму, должны отличаться от электронных писем, которые не являются спамом.
tokenProbs = [0.2 0.3 0.1 0.15 0.25;... 0.4 0.1 0.3 0.05 0.15]; % Token relative frequencies tokensPerEmail = 20; % Fixed for convenience X = zeros(n,5); X(Y == 1,:) = mnrnd(tokensPerEmail,tokenProbs(1,:),sum(Y == 1)); X(Y == -1,:) = mnrnd(tokensPerEmail,tokenProbs(2,:),sum(Y == -1));
Обучите классификатор
Обучите наивный классификатор Байеса. Укажите, что предикторы являются многочленом.
Mdl = fitcnb(X,Y,'DistributionNames','mn');
Mdl
является обученным классификатором ClassificationNaiveBayes
.
Оцените производительность в выборке Mdl
путем оценки misclassification ошибки.
isGenRate = resubLoss(Mdl,'LossFun','ClassifErr')
isGenRate = 0.0200
misclassification уровень в выборке составляет 2%.
Создайте новые данные
Случайным образом сгенерируйте, отклоняется, которые представляют новый пакет электронных писем.
newN = 500; newY = randsample([-1 1],newN,true); newX = zeros(newN,5); newX(newY == 1,:) = mnrnd(tokensPerEmail,tokenProbs(1,:),... sum(newY == 1)); newX(newY == -1,:) = mnrnd(tokensPerEmail,tokenProbs(2,:),... sum(newY == -1));
Оцените производительность классификатора
Классифицируйте новые электронные письма с помощью обученного наивного классификатора Байеса Mdl
и определите, делает ли алгоритм вывод.
oosGenRate = loss(Mdl,newX,newY)
oosGenRate = 0.0261
misclassification уровень из выборки составляет 2,6%, указывающие, что классификатор делает вывод довольно хорошо.
Этот пример показывает, как использовать пару "имя-значение" OptimizeHyperparameters
, чтобы минимизировать потерю перекрестной проверки в наивном классификаторе Байеса с помощью fitcnb
. Пример использует ирисовые данные Фишера.
Загрузите ирисовые данные Фишера.
load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'};
Оптимизируйте классификацию с помощью параметров 'auto'.
Для воспроизводимости, набор случайный seed и использование функция приобретения 'expected-improvement-plus'
.
rng default Mdl = fitcnb(X,Y,'ClassNames',classNames,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',... 'expected-improvement-plus'))
Warning: It is recommended that you first standardize all numeric predictors when optimizing the Naive Bayes 'Width' parameter. Ignore this warning if you have done that.
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Distribution-| Width | | | result | | runtime | (observed) | (estim.) | Names | | |=====================================================================================================| | 1 | Best | 0.053333 | 0.79894 | 0.053333 | 0.053333 | normal | - | | 2 | Best | 0.046667 | 0.70028 | 0.046667 | 0.049998 | kernel | 0.11903 | | 3 | Accept | 0.053333 | 0.193 | 0.046667 | 0.046667 | normal | - | | 4 | Accept | 0.086667 | 0.51084 | 0.046667 | 0.046668 | kernel | 2.4506 | | 5 | Accept | 0.046667 | 0.40222 | 0.046667 | 0.046663 | kernel | 0.10449 | | 6 | Accept | 0.073333 | 0.57578 | 0.046667 | 0.046665 | kernel | 0.025044 | | 7 | Accept | 0.046667 | 0.40747 | 0.046667 | 0.046655 | kernel | 0.27647 | | 8 | Accept | 0.046667 | 0.36691 | 0.046667 | 0.046647 | kernel | 0.2031 | | 9 | Accept | 0.06 | 0.38677 | 0.046667 | 0.046658 | kernel | 0.44271 | | 10 | Accept | 0.046667 | 0.3974 | 0.046667 | 0.046618 | kernel | 0.2412 | | 11 | Accept | 0.046667 | 0.35605 | 0.046667 | 0.046619 | kernel | 0.071925 | | 12 | Accept | 0.046667 | 0.37162 | 0.046667 | 0.046612 | kernel | 0.083459 | | 13 | Accept | 0.046667 | 0.36724 | 0.046667 | 0.046603 | kernel | 0.15661 | | 14 | Accept | 0.046667 | 0.34634 | 0.046667 | 0.046607 | kernel | 0.25613 | | 15 | Accept | 0.046667 | 0.33102 | 0.046667 | 0.046606 | kernel | 0.17776 | | 16 | Accept | 0.046667 | 0.38409 | 0.046667 | 0.046606 | kernel | 0.13632 | | 17 | Accept | 0.046667 | 0.32028 | 0.046667 | 0.046606 | kernel | 0.077598 | | 18 | Accept | 0.046667 | 0.34258 | 0.046667 | 0.046626 | kernel | 0.25646 | | 19 | Accept | 0.046667 | 0.40328 | 0.046667 | 0.046626 | kernel | 0.093584 | | 20 | Accept | 0.046667 | 0.35038 | 0.046667 | 0.046627 | kernel | 0.061602 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Distribution-| Width | | | result | | runtime | (observed) | (estim.) | Names | | |=====================================================================================================| | 21 | Accept | 0.046667 | 0.37343 | 0.046667 | 0.046627 | kernel | 0.066532 | | 22 | Accept | 0.093333 | 0.40511 | 0.046667 | 0.046618 | kernel | 5.8968 | | 23 | Accept | 0.046667 | 0.33341 | 0.046667 | 0.046619 | kernel | 0.067045 | | 24 | Accept | 0.046667 | 0.31971 | 0.046667 | 0.04663 | kernel | 0.25281 | | 25 | Accept | 0.046667 | 0.342 | 0.046667 | 0.04663 | kernel | 0.1473 | | 26 | Accept | 0.046667 | 0.3383 | 0.046667 | 0.046631 | kernel | 0.17211 | | 27 | Accept | 0.046667 | 0.32951 | 0.046667 | 0.046631 | kernel | 0.12457 | | 28 | Accept | 0.046667 | 0.31916 | 0.046667 | 0.046631 | kernel | 0.066659 | | 29 | Accept | 0.046667 | 0.34628 | 0.046667 | 0.046631 | kernel | 0.1081 | | 30 | Accept | 0.08 | 0.31711 | 0.046667 | 0.046628 | kernel | 1.1048 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 47.3491 seconds. Total objective function evaluation time: 11.7365 Best observed feasible point: DistributionNames Width _________________ _______ kernel 0.11903 Observed objective function value = 0.046667 Estimated objective function value = 0.046628 Function evaluation time = 0.70028 Best estimated feasible point (according to models): DistributionNames Width _________________ _______ kernel 0.25613 Estimated objective function value = 0.046628 Estimated function evaluation time = 0.37792
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] DistributionNames: {1x4 cell} DistributionParameters: {3x4 cell} Kernel: {1x4 cell} Support: {1x4 cell} Width: [3x4 double] Properties, Methods
Tbl
Выборочные данныеВыборочные данные раньше обучали модель, заданную как таблица. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза. Опционально, Tbl
может содержать один дополнительный столбец для переменной отклика. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если Tbl
содержит переменную отклика, и вы хотите использовать все остающиеся переменные в Tbl
как предикторы, затем задать переменную отклика при помощи ResponseVarName
.
Если Tbl
содержит переменную отклика, и вы хотите использовать только подмножество остающихся переменных в Tbl
как предикторы, затем задать формулу при помощи formula
.
Если Tbl
не содержит переменную отклика, то задайте переменную отклика при помощи Y
. Длина переменной отклика и количество строк в Tbl
должны быть равными.
Типы данных: table
ResponseVarName
— Имя переменной откликаTbl
Имя переменной отклика, заданное как имя переменной в Tbl
.
Необходимо задать ResponseVarName
как вектор символов или представить скаляр в виде строки. Например, если переменная отклика, Y
хранится как Tbl.Y
, то задают его как 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Y
, как предикторы когда обучение модель.
Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если Y
является символьным массивом, то каждый элемент переменной отклика должен соответствовать одной строке массива.
Это - хорошая практика, чтобы задать порядок классов при помощи аргумента пары "имя-значение" ClassNames
.
Типы данных: char | string
formula
— Explanatory ответа и подмножество переменных прогнозаОбъяснительная модель ответа и подмножество переменных прогноза, заданных как вектор символов или скаляр строки в форме 'Y~X1+X2+X3'
. В этой форме Y
представляет переменную отклика, и X1
, X2
, и X3
представляет переменные прогноза. Переменные должны быть именами переменных в Tbl
(Tbl.Properties.VariableNames
).
Чтобы задать подмножество переменных в Tbl
как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl
, которые не появляются в formula
.
Типы данных: char | string
Y
Метки классаМетки класса, к которым обучен наивный классификатор Байеса, задали как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. Каждый элемент Y
задает членство в классе соответствующей строки X
. Y
поддерживает уровни класса K.
Если Y
является символьным массивом, то каждая строка должна соответствовать одной метке класса.
Длина Y
и количество строк X
должны быть эквивалентными.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
X
Данные о предиктореДанные о предикторе, заданные как числовая матрица.
Каждая строка X
соответствует одному наблюдению (также известный как экземпляр или пример), и каждый столбец соответствует одной переменной (также известный как функцию).
Длина Y
и количество строк X
должны быть эквивалентными.
Типы данных: double
Программное обеспечение обрабатывает NaN
, пустой символьный вектор (''
), пустая строка (""
), <missing>
и элементы <undefined>
как пропускающий значения данных.
Если Y
содержит отсутствующие значения, то программное обеспечение удаляет их и соответствующие строки X
.
Если X
содержит какие-либо строки, состоявшие полностью из отсутствующих значений, то программное обеспечение удаляет те строки и соответствующие элементы Y
.
Если X
содержит отсутствующие значения, и вы устанавливаете 'DistributionNames','mn'
, то программное обеспечение удаляет те строки X
и соответствующие элементы Y
.
Если предиктор не представлен в классе, то есть, если всеми его значениями является NaN
в классе, то программное обеспечение возвращает ошибку.
Удаление строк X
и соответствующих элементов Y
уменьшает эффективный объем выборки обучения или перекрестной проверки.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'DistributionNames','mn','Prior','uniform','KSWidth',0.5
указывает, что распределение данных является многочленом, априорные вероятности для всех классов равны, и пропускная способность окна сглаживания ядра для всех классов является модулями 0.5
.Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'
. Можно изменить перекрестную проверку для 'OptimizeHyperparameters'
только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
'DistributionNames'
— Дистрибутивы данных'kernel'
| 'mn'
| 'mvmn'
| 'normal'
| массив строк | массив ячеек из символьных векторовДистрибутивы данных использование fitcnb
, чтобы смоделировать данные, заданные как пара, разделенная запятой, состоящая из 'DistributionNames'
и вектора символов или представить в виде строки скаляр, массив строк или массив ячеек из символьных векторов со значениями из этой таблицы.
Значение | Описание |
---|---|
'kernel' | Ядро, сглаживающее оценку плотности. |
'mn' | Распределение многочлена. Если вы задаете mn , то всеми функциями являются компоненты распределения многочлена. Поэтому вы не можете включать 'mn' как элемент массива строк или массива ячеек из символьных векторов. Для получения дополнительной информации см. Алгоритмы. |
'mvmn' | Многомерное распределение многочлена. Для получения дополнительной информации см. Алгоритмы. |
'normal' | Нормальное (Гауссово) распределение. |
Если вы задаете вектор символов или представляете скаляр в виде строки, то модели ПО все функции с помощью того распределения. Если вы задаете 1 P массивом строк или массивом ячеек из символьных векторов, то модели ПО показывают j с помощью распределения в элементе j массива.
По умолчанию программное обеспечение устанавливает все предикторы, заданные как категориальные предикторы (использующий аргумент пары "имя-значение" CategoricalPredictors
) к 'mvmn'
. В противном случае распределением по умолчанию является 'normal'
.
Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel'
, чтобы дополнительно задать Kernel
, Support
или Width
.
Пример: 'DistributionNames','mn'
Пример: 'DistributionNames',{'kernel','normal','kernel'}
'Kernel'
— Ядро более сглаженный тип'normal'
(значение по умолчанию) | 'box'
| 'epanechnikov'
| 'triangle'
| массив строк | массив ячеек из символьных векторовЯдро более сглаженный тип, заданный как пара, разделенная запятой, состоящая из 'Kernel'
и вектора символов или скаляра строки, массива строк или массива ячеек из символьных векторов.
Эта таблица суммирует доступные параметры для установки ядра, сглаживающего область плотности. Позволенный I {u} обозначают функцию индикатора.
Значение | Ядро | Формула |
---|---|---|
'box' | Поле (универсальная форма) |
|
'epanechnikov' | Епанечников |
|
'normal' | Гауссов |
|
'triangle' | Треугольный |
|
Если вы задаете 1 P массивом строк или массивом ячеек с каждым элементом массива, содержащего значение в таблице, то программное обеспечение обучает классификатор с помощью ядра более сглаженный тип в элементе j для функции j в X
. Программное обеспечение игнорирует элементы Kernel
, не соответствующего предиктору, распределением которого является 'kernel'
.
Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel'
, чтобы дополнительно задать Kernel
, Support
или Width
.
Пример: 'Kernel',{'epanechnikov','normal'}
Поддержка
Ядро, сглаживающее поддержку плотности'unbounded'
(значение по умолчанию) | 'positive'
| массив строк | массив ячеек | числовой вектор - строкаЯдро, сглаживающее поддержку плотности, заданную как пара, разделенная запятой, состоящая из 'Support'
и 'positive'
, 'unbounded'
, массива строк, массива ячеек или числового вектора - строки. Программное обеспечение применяет плотность сглаживания ядра к заданной области.
Эта таблица суммирует доступные параметры для установки ядра, сглаживающего область плотности.
Значение | Описание |
---|---|
1 2 числовой вектор - строка | Например, [L,U] , где L и U являются конечными нижними и верхними границами, соответственно, для поддержки плотности. |
'positive' | Поддержка плотности является всеми положительными действительными значениями. |
'unbounded' | Поддержка плотности является всеми действительными значениями. |
Если вы задаете 1 P массивом строк или массивом ячеек с каждым элементом в массиве строк, содержащем текстовое значение в таблице и каждый элемент в массиве ячеек, содержащем значение в таблице, то программное обеспечение обучает классификатор с помощью поддержки ядра в элементе j для функции j в X
. Программное обеспечение игнорирует элементы Kernel
, не соответствующего предиктору, распределением которого является 'kernel'
.
Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel'
, чтобы дополнительно задать Kernel
, Support
или Width
.
Пример: 'KSSupport',{[-10,20],'unbounded'}
Типы данных: char
| string
| cell
| double
width
Ядро, сглаживающее ширину окнаЯдро, сглаживающее ширину окна, заданную как пара, разделенная запятой, состоящая из 'Width'
и матрица числовых значений, числового вектор-столбца, числового вектора - строки или скаляра.
Предположим, что существуют уровни класса K и предикторы P. Эта таблица суммирует доступные параметры для установки ядра, сглаживающего ширину окна.
Значение | Описание |
---|---|
K-by-P матрица числовых значений | Элемент (k,j) задает ширину для предиктора j в классе k. |
K-by-1 числовой вектор-столбец | Элемент k задает ширину для всех предикторов в классе k. |
1 P числовым вектором - строкой | Элемент j задает ширину на всех уровнях класса для предиктора j. |
скаляр | Задает пропускную способность для всех функций во всех классах. |
По умолчанию программное обеспечение выбирает ширину по умолчанию автоматически для каждой комбинации предиктора и класса при помощи значения, которое оптимально для Распределения Гаусса. Если вы задаете Width
, и он содержит NaN
s, то программное обеспечение выбирает ширины для элементов, содержащих NaN
s.
Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel'
, чтобы дополнительно задать Kernel
, Support
или Width
.
Пример: 'Width',[NaN NaN]
Типы данных: double
| struct
'CrossVal'
— Флаг перекрестной проверки'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
, то программное обеспечение реализует 10-кратную перекрестную проверку.
Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition
, Holdout
, KFold
или Leaveout
. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.
Также перекрестный подтвердите позже путем передачи Mdl
crossval
.
Пример: 'CrossVal','on'
'CVPartition'
— Раздел перекрестной проверки[]
(значение по умолчанию) | объект раздела cvpartition
Раздел перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CVPartition'
и объекта раздела cvpartition
, создается cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout'
и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, то программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте % p*100
данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold'
— Количество сгибов10
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как пара, разделенная запятой, состоящая из 'KFold'
и положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, то программное обеспечение завершает эти шаги:
Случайным образом разделите данные в наборы k
.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в ячейках k
-by-1 вектор ячейки в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout'
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout'
и 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, то, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в свойстве NumObservations
модели), программное обеспечение завершает эти шаги:
Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в свойстве Trained
перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
или Leaveout
.
Пример: 'Leaveout','on'
'CategoricalPredictors'
— Категориальный список предикторов'all'
Категориальный список предикторов, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел | Запись в векторе является индексным значением, соответствующим столбцу данных о предикторе (X или Tbl ), который содержит категориальную переменную. |
Логический вектор | Запись true означает, что соответствующий столбец данных о предикторе (X или Tbl ) является категориальной переменной. |
Символьная матрица | Каждая строка матрицы является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждый элемент в массиве является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames . |
все | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице (Tbl
), fitcnb
принимает, что переменная является категориальной, если это содержит логические значения, категориальные значения, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X
), fitcnb
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые категориальные предикторы, когда данные будут матрицей, используйте аргумент пары "имя-значение" 'CategoricalPredictors'
.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'ClassNames'
— Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из 'ClassNames'
и категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
для:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
, чтобы задать порядок размерностей Cost
или порядка следования столбцов очков классификации, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите, что набором всех отличных имен классов в Y
является {'a','b','c'}
. Чтобы обучить модель с помощью наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
является набором всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Стоимость misclassificationСтоимость misclassification точки, заданной как пара, разделенная запятой, состоящая из 'Cost'
и одно из следующего:
Квадратная матрица, где Cost(i,j)
является стоимостью классификации точки в класс j
, если его истинным классом является i
(т.е. строки соответствуют истинному классу и столбцам, соответствует предсказанному классу). Чтобы задать порядок класса для соответствующих строк и столбцов Cost
, дополнительно задайте аргумент пары "имя-значение" ClassNames
.
Структура S
, имеющий два поля: S.ClassNames
, содержащий названия группы как переменная того же типа как Y
и S.ClassificationCosts
, содержащий матрицу стоимости.
Значением по умолчанию является Cost(i,j)=1
если i~=j
и Cost(i,j)=0
если i=j
.
Пример: 'Cost',struct('ClassNames',{{'b','g'}},'ClassificationCosts',[0 0.5; 1 0])
Типы данных: single
| double
| struct
'PredictorNames'
— Имена переменной прогнозаИмена переменной прогноза, заданные как пара, разделенная запятой, состоящая из 'PredictorNames'
и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames'
зависит от способа, которым вы снабжаете данными тренировки.
Если вы предоставляете X
и Y
, то можно использовать 'PredictorNames'
, чтобы дать переменные прогноза на имена X
.
Порядок имен в PredictorNames
должен соответствовать порядку следования столбцов X
. Таким образом, PredictorNames{1}
является именем X(:,1)
, PredictorNames{2}
является именем X(:,2)
и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должны быть равными.
По умолчанию PredictorNames
является {'x1','x2',...}
.
Если вы предоставляете Tbl
, то можно использовать 'PredictorNames'
, чтобы выбрать который переменные прогноза использовать в обучении. Таким образом, fitcnb
использует только переменные прогноза в PredictorNames
и переменную отклика в обучении.
PredictorNames
должен быть подмножеством Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию PredictorNames
содержит имена всех переменных прогноза.
Это - хорошая практика, чтобы задать предикторы для обучения с помощью или 'PredictorNames'
или formula
только.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'Prior'
— Априорные вероятности'empirical'
(значение по умолчанию) | 'uniform'
| вектор скалярных значений | структураАприорные вероятности для каждого класса, заданного как пара, разделенная запятой, состоящая из 'Prior'
и значения в этой таблице.
Значение | Описание |
---|---|
'empirical' | Априорные вероятности класса являются частотами родственника класса в Y . |
'uniform' | Все априорные вероятности класса равны 1/K, где K является количеством классов. |
числовой вектор | Каждый элемент является априорной вероятностью класса. Закажите элементы согласно Mdl .ClassNames или задайте порядок с помощью аргумента пары "имя-значение" ClassNames . Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1 . |
структура | Структура
|
Если вы устанавливаете значения и для Weights
и для Prior
, веса повторно нормированы, чтобы составить в целом значение априорной вероятности в соответствующем классе.
Пример: 'Prior','uniform'
Типы данных: char
| string
| single
| double
| struct
'ResponseName'
— Имя переменной отклика'Y'
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName'
и вектора символов или скаляра строки.
Если вы предоставляете Y
, то можно использовать 'ResponseName'
, чтобы задать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, то вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char | string
'ScoreTransform'
— Выиграйте преобразование'none'
(значение по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Выиграйте преобразование, заданное как пара, разделенная запятой, состоящая из 'ScoreTransform'
и вектора символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB® или функции вы задаете, используете ее указатель на функцию для счета, преобразовывают. Указатель на функцию должен принять матрицу (исходные очки) и возвратить матрицу, одного размера (преобразованные очки).
Пример: 'ScoreTransform','logit'
Типы данных: char
| string
| function_handle
'Weights'
— Веса наблюденияTbl
Веса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights'
и числовой вектор положительных значений или имя переменной в Tbl
. Программное обеспечение взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должен равняться количеству строк X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, то Weights
может быть именем переменной в Tbl
, который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или представить скаляр в виде строки. Например, если вектор весов, W
хранится как Tbl.W
, то задают его как 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы или ответ когда обучение модель.
Программное обеспечение нормирует Weights
, чтобы суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию Weights
является
, где ones(n,1)
n
является количеством наблюдений в X
или Tbl
.
Типы данных: double
| single
| char
| string
'OptimizeHyperparameters'
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariable
Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters'
и одно из следующего:
'none'
Не оптимизировать.
'auto'
Используйте {'DistributionNames','Width'}
.
все
Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор объектов optimizableVariable
, обычно вывод hyperparameters
.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcnb
путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions
.
Значения 'OptimizeHyperparameters'
заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters'
к 'auto'
заставляет значения 'auto'
применяться.
Имеющие право параметры для fitcnb
:
DistributionNames
— fitcnb
ищет среди 'normal'
и 'kernel'
.
Width
fitcnb
ищет среди действительных значений, по умолчанию масштабируемых журналом в области значений [MinPredictorDiff/4,max(MaxPredictorRange,MinPredictorDiff)]
.
Kernel
— fitcnb
ищет среди 'normal'
, 'box'
, 'epanechnikov'
и 'triangle'
.
Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable
, которые имеют значения не по умолчанию. Например,
load fisheriris params = hyperparameters('fitcnb',meas,species); params(2).Range = [1e-2,1e2];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
. Чтобы управлять графиками, установите поле ShowPlots
аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'
.
Для примера смотрите, Оптимизируют Наивный классификатор Байеса.
Пример: 'auto'
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions'
и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters
. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt' , то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization . | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите
аргумент пары "имя-значение" | 1 |
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | Объект cvpartition , как создано cvpartition . | 'Kfold',5 , если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) , представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная наивная модель классификации БейесаClassificationNaiveBayes
| ClassificationPartitionedModel
перекрестный подтвержденный объект моделиОбученная наивная модель классификации Бейеса, возвращенная как объект модели ClassificationNaiveBayes
или ClassificationPartitionedModel
перекрестный подтвержденный объект модели.
Если вы устанавливаете какой-либо из аргументов пары "имя-значение" KFold
, Holdout
, CrossVal
или CVPartition
, то Mdl
является ClassificationPartitionedModel
перекрестный подтвержденный объект модели. В противном случае Mdl
является объектом модели ClassificationNaiveBayes
.
К ссылочным свойствам Mdl
используйте запись через точку. Например, чтобы получить доступ к предполагаемым параметрам распределения, введите Mdl.DistributionParameters
.
В модели сумки лексем значении предиктора j является неотрицательным количеством случаев маркерного j в этом наблюдении. Количество категорий (интервалы) в этой модели многочлена является количеством отличных лексем, то есть, количеством предикторов.
Naive Bayes является алгоритмом классификации, который применяет оценку плотности данными.
Алгоритм усиливает теорему Бейеса, и (наивно) принимает, что предикторы условно независимы, учитывая класс. Хотя предположение обычно нарушается на практике, наивные классификаторы Байеса имеют тенденцию приводить к апостериорным распределениям, которые устойчивы к смещенным оценкам плотности класса, особенно где следующее 0.5 (контур решения) [1].
Наивные классификаторы Байеса присваивают наблюдения самому вероятному классу (другими словами, правило решения maximum a posteriori). Явным образом, алгоритм:
Оценивает плотность предикторов в каждом классе.
Апостериорные вероятности моделей согласно правилу Бейеса. Таким образом, для всего k = 1..., K,
где:
Y является случайной переменной, соответствующей индексу класса наблюдения.
X 1..., XP является случайными предикторами наблюдения.
априорная вероятность, что индексом класса является k.
Классифицирует наблюдение путем оценки апостериорной вероятности для каждого класса, и затем присваивает наблюдение классу, приводящему к максимальной апостериорной вероятности.
Если предикторы составляют распределение многочлена, то апостериорная вероятность где функция вероятностной меры распределения многочлена.
Для классификации основанных на количестве данных, таких как модель сумки лексем, используют распределение многочлена (например, устанавливают 'DistributionNames','mn'
).
После обучения модель можно сгенерировать код C/C++, который предсказывает метки для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
Если вы задаете 'DistributionNames','mn'
, когда учебный Mdl
с помощью fitcnb
, то программное обеспечение соответствует распределению многочлена с помощью модели сумки лексем. Программное обеспечение хранит вероятность, что маркерный j
появляется в классе k
в свойстве
. Используя дополнение, сглаживающее [2], предполагаемая вероятностьDistributionParameters{k,j}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если вы задаете 'DistributionNames','mvmn'
когда учебный Mdl
с помощью fitcnb
, то:
Для каждого предиктора программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
и считает каждый уровень интервалом. Каждая комбинация предиктора/класса является отдельной, независимой случайной переменной многочлена.
Для предиктора j
в классе k экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка сохранены в
.CategoricalLevels{j}
Программное обеспечение хранит вероятность, что предиктор j
, в классе k
, имеет уровень L в свойстве
для всех уровней в DistributionParameters{k,j}
. Используя дополнение, сглаживающее [2], предполагаемая вероятностьCategoricalLevels{j}
где:
который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.
nk является количеством наблюдений в классе k.
если xij = L, 0 в противном случае.
вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
mj является количеством отличных уровней в предикторе j.
mk является взвешенным количеством наблюдений в классе k.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.
[2] Укомплектование людьми, C. D. П. Рэгэвэн и М. Шюц. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
Эта функция поддерживает высокие массивы с ограничениями:
Поддерживаемые синтаксисы:
Mdl = fitcnb(Tbl,Y)
Mdl = fitcnb(X,Y)
Mdl = fitcnb(___,Name,Value)
Опции, связанные с плотностью ядра, перекрестной проверкой и гипероптимизацией параметров управления, не поддержаны. Поддерживаемые аргументы пары "имя-значение":
'DistributionNames'
— значение 'kernel'
не поддержано.
'CategoricalPredictors'
'Cost'
'PredictorNames'
'Prior'
'ResponseName'
'ScoreTransform'
'Weights'
— Значение должно быть длинным массивом.
Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true)
в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationNaiveBayes
| ClassificationPartitionedModel
| predict
| templateNaiveBayes
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.