Обучите мультикласс наивная модель Bayes
возвращает мультикласс наивная модель 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 = @(x,y) arrayfun(@(x0,y0) mvnpdf([x0 y0],Mu(j,:),Sigma(:,:,j)),x,y); 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=3×4 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.46461 | 0.053333 | 0.053333 | normal | - | | 2 | Best | 0.046667 | 0.66178 | 0.046667 | 0.049998 | kernel | 0.11903 | | 3 | Accept | 0.053333 | 0.13689 | 0.046667 | 0.046667 | normal | - | | 4 | Accept | 0.086667 | 0.32178 | 0.046667 | 0.046668 | kernel | 2.4506 | | 5 | Accept | 0.046667 | 0.30173 | 0.046667 | 0.046663 | kernel | 0.10449 | | 6 | Accept | 0.073333 | 0.2986 | 0.046667 | 0.046665 | kernel | 0.025044 | | 7 | Accept | 0.046667 | 0.31597 | 0.046667 | 0.046655 | kernel | 0.27647 | | 8 | Accept | 0.046667 | 0.31636 | 0.046667 | 0.046647 | kernel | 0.2031 | | 9 | Accept | 0.06 | 0.31539 | 0.046667 | 0.046658 | kernel | 0.44271 | | 10 | Accept | 0.046667 | 0.28645 | 0.046667 | 0.046618 | kernel | 0.2412 | | 11 | Accept | 0.046667 | 0.29742 | 0.046667 | 0.046619 | kernel | 0.071925 | | 12 | Accept | 0.046667 | 0.36908 | 0.046667 | 0.046612 | kernel | 0.083459 | | 13 | Accept | 0.046667 | 0.38603 | 0.046667 | 0.046603 | kernel | 0.15661 | | 14 | Accept | 0.046667 | 0.30501 | 0.046667 | 0.046607 | kernel | 0.25613 | | 15 | Accept | 0.046667 | 0.28566 | 0.046667 | 0.046606 | kernel | 0.17776 | | 16 | Accept | 0.046667 | 0.2807 | 0.046667 | 0.046606 | kernel | 0.13632 | | 17 | Accept | 0.046667 | 0.34324 | 0.046667 | 0.046606 | kernel | 0.077598 | | 18 | Accept | 0.046667 | 0.31454 | 0.046667 | 0.046626 | kernel | 0.25646 | | 19 | Accept | 0.046667 | 0.30016 | 0.046667 | 0.046626 | kernel | 0.093584 | | 20 | Accept | 0.046667 | 0.39613 | 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.31932 | 0.046667 | 0.046627 | kernel | 0.066532 | | 22 | Accept | 0.093333 | 0.28208 | 0.046667 | 0.046618 | kernel | 5.8968 | | 23 | Accept | 0.046667 | 0.27647 | 0.046667 | 0.046619 | kernel | 0.067045 | | 24 | Accept | 0.046667 | 0.298 | 0.046667 | 0.04663 | kernel | 0.25281 | | 25 | Accept | 0.046667 | 0.29134 | 0.046667 | 0.04663 | kernel | 0.1473 | | 26 | Accept | 0.046667 | 0.27603 | 0.046667 | 0.046631 | kernel | 0.17211 | | 27 | Accept | 0.046667 | 0.31441 | 0.046667 | 0.046631 | kernel | 0.12457 | | 28 | Accept | 0.046667 | 0.31623 | 0.046667 | 0.046631 | kernel | 0.066659 | | 29 | Accept | 0.046667 | 0.31834 | 0.046667 | 0.046631 | kernel | 0.1081 | | 30 | Accept | 0.08 | 0.3111 | 0.046667 | 0.046628 | kernel | 1.1048 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 30.7627 seconds Total objective function evaluation time: 9.7009 Best observed feasible point: DistributionNames Width _________________ _______ kernel 0.11903 Observed objective function value = 0.046667 Estimated objective function value = 0.046667 Function evaluation time = 0.66178 Best estimated feasible point (according to models): DistributionNames Width _________________ _______ kernel 0.25613 Estimated objective function value = 0.046628 Estimated function evaluation time = 0.31466
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
— Объяснительная модель переменной отклика и подмножество переменных предикторовОбъяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме "Y~x1+x2+x3"
. В этой форме, Y
представляет переменную отклика и x1
x2
, и x3
представляйте переменные предикторы.
Задавать подмножество переменных в Tbl
как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl
это не появляется в formula
.
Имена переменных в формуле должны быть оба именами переменных в Tbl
(Tbl.Properties.VariableNames
) и допустимый MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных не допустимы, то можно преобразовать их при помощи matlab.lang.makeValidName
функция.
Типы данных: 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
имя аргумента и 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
Поддержка
, или 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
Поддержка
, или Width
.
Пример: 'Kernel',{'epanechnikov','normal'}
Support
— Ядро, сглаживающее поддержку плотности'unbounded'
(значение по умолчанию) | 'positive'
| массив строк | массив ячеек | числовой вектор-строкаЯдро, сглаживающее плотность, поддерживает в виде разделенной запятой пары, состоящей из 'Support'
и 'positive'
, 'unbounded'
, массив строк, массив ячеек или числовой вектор-строка. Программное обеспечение применяет плотность сглаживания ядра к заданной области.
Эта таблица суммирует доступные параметры для установки ядра, сглаживающего область плотности.
Значение | Описание |
---|---|
1 2 числовой вектор-строка | Например, [L,U] , где L и U конечные нижние и верхние границы, соответственно, для поддержки плотности. |
'positive' | Поддержка плотности является всеми положительными вещественными значениями. |
'unbounded' | Поддержка плотности является всеми вещественными значениями. |
Если вы задаете 1 P массивом строк или массивом ячеек с каждым элементом в массиве строк, содержащем текстовое значение в таблице и каждый элемент в массиве ячеек, содержащем значение в таблице, то программное обеспечение обучает классификатор с помощью поддержки ядра в элементе j для функции j в X
. Программное обеспечение игнорирует элементы Kernel
не соответствуя предиктору, распределением которого является 'kernel'
.
Необходимо задать в наименьшем количестве одного предиктора, имеет распределение 'kernel'
дополнительно задавать Kernel
Поддержка
, или 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
Поддержка
, или 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
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
Holdout
— Часть данных для валидации затяжкиЧасть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double |
single
KFold
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
Leaveout
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один" в виде 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations
свойство модели), программное обеспечение завершает эти шаги:
Зарезервируйте одно наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в n-by-1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
CategoricalPredictors
— Категориальный список предикторов'all'
Категориальные предикторы перечисляют в виде одного из значений в этой таблице.
Значение | Описание |
---|---|
Вектор из положительных целых чисел |
Каждая запись в векторе является значением индекса, указывающим, что соответствующий предиктор является категориальным. Значения индекса между 1 и Если |
Логический вектор |
|
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с записями в PredictorNames . |
"all" | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице (Tbl
), fitcnb
принимает, что переменная является категориальной, если это - логический вектор, категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X
), fitcnb
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их при помощи 'CategoricalPredictors'
аргумент значения имени.
Для идентифицированных категориальных предикторов, fitcnb
использует многомерные распределения многочлена. Для получения дополнительной информации смотрите DistributionNames
и Алгоритмы.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
ClassNames
— Имена классов, чтобы использовать для обученияИмена классов, чтобы использовать для обучения в виде категориального, символа или массива строк; логический или числовой вектор; или массив ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как переменную отклика в Tbl
или Y
.
Если ClassNames
символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
к:
Задайте порядок классов во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
задавать порядок размерностей Cost
или порядок следования столбцов классификационных оценок, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите что набор всех отличных имен классов в Y
["a","b","c"]
. Обучать модель с помощью наблюдений от классов "a"
и "c"
только, задайте "ClassNames",["a","c"]
.
Значение по умолчанию для ClassNames
набор всех отличных имен классов в переменной отклика в Tbl
или Y
.
Пример: "ClassNames",["b","g"]
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Cost
— Стоимость misclassificationСтоимость misclassification точки в виде разделенной запятой пары, состоящей из 'Cost'
и одно из следующего:
Квадратная матрица, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
(т.е. строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Чтобы задать класс заказывают для соответствующих строк и столбцов Cost
, дополнительно задайте ClassNames
аргумент пары "имя-значение".
Структуры
наличие двух полей: 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
зависит от способа, которым вы снабжаете обучающими данными.
Если вы предоставляете 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"
(значение по умолчанию) | вектор символов | строковый скалярИмя переменной отклика в виде вектора символов или строкового скаляра.
Если вы предоставляете Y
, затем можно использовать ResponseName
задавать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, затем вы не можете использовать ResponseName
.
Пример: "ResponseName","response"
Типы данных: char |
string
ScoreTransform
— Выиграйте преобразование"none"
(значение по умолчанию) | "doublelogit"
| "invlogit"
| "ismax"
| "logit"
| указатель на функцию |...Выиграйте преобразование в виде вектора символов, строкового скаляра или указателя на функцию.
Эта таблица суммирует доступные векторы символов и строковые скаляры.
Значение | Описание |
---|---|
"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
единицы (
, где n
,1)n
количество наблюдений в X
или Tbl
.
Типы данных: double |
single
| char
| string
OptimizeHyperparameters
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'all'
| массив строк или массив ячеек имеющих право названий параметра | вектор из optimizableVariable
объектыПараметры, чтобы оптимизировать в виде разделенной запятой пары, состоящей из 'OptimizeHyperparameters'
и одно из следующего:
'none'
— Не оптимизировать.
'auto'
— Используйте {'DistributionNames','Width'}
.
'all'
— Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор из optimizableVariable
объекты, обычно выход hyperparameters
.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcnb
путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте HyperparameterOptimizationOptions
пара "имя-значение".
Примечание
Значения 'OptimizeHyperparameters'
замените любые значения, вы задаете использование других аргументов name-value. Например, установка 'OptimizeHyperparameters'
к 'auto'
причины fitcnb
оптимизировать гиперпараметры, соответствующие 'auto'
опция и проигнорировать любые заданные значения для гиперпараметров.
Имеющие право параметры для fitcnb
:
DistributionNames
— fitcnb
поисковые запросы среди 'normal'
и 'kernel'
.
Width
— fitcnb
поисковые запросы среди вещественных значений, по умолчанию масштабируемых журналом в области значений [MinPredictorDiff/4,max(MaxPredictorRange,MinPredictorDiff)]
.
Kernel
— fitcnb
поисковые запросы среди 'normal'
поле
, 'epanechnikov'
, и 'triangle'
.
Установите параметры не по умолчанию путем передачи вектора из optimizableVariable
объекты, которые имеют значения не по умолчанию. Например,
load fisheriris params = hyperparameters('fitcnb',meas,species); params(2).Range = [1e-2,1e2];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является misclassification уровнем. Чтобы управлять итеративным отображением, установите Verbose
поле 'HyperparameterOptimizationOptions'
аргумент значения имени. Чтобы управлять графиками, установите ShowPlots
поле 'HyperparameterOptimizationOptions'
аргумент значения имени.
Для примера смотрите, Оптимизируют Наивный классификатор Байеса.
Пример: 'auto'
HyperparameterOptimizationOptions
— Опции для оптимизацииОпции для оптимизации в виде структуры. Этот аргумент изменяет эффект OptimizeHyperparameters
аргумент значения имени. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Захват функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' и 'randomsearch' , и целая сетка для 'gridsearch' |
MaxTime | Ограничение по времени в виде положительного действительного скаляра. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором из положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10
|
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее наблюдаемое значение целевой функции против номера итерации. Если вы используете Байесовую оптимизацию (Optimizer 'bayesopt' ), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults . Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то 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™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
Если переменный предиктор j
имеет условное нормальное распределение (см. DistributionNames
аргумент значения имени), программное обеспечение соответствует распределению к данным путем вычисления специфичного для класса взвешенного среднего и объективной оценки взвешенного стандартного отклонения. Для каждого класса k:
Взвешенное среднее предиктора j
где wi является весом для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
Несмещенное средство оценки взвешенного стандартного отклонения предиктора j
где z 1|k является суммой весов в классе, k и z 2|k являются суммой весов в квадрате в классе k.
Если все переменные предикторы составляют условное распределение многочлена (вы задаете 'DistributionNames','mn'
), программное обеспечение соответствует распределению с помощью модели сумки лексем. Программное обеспечение хранит вероятность тот маркерный j
появляется в классе k
в свойстве DistributionParameters {
. Используя дополнение, сглаживающее [2], предполагаемая вероятностьk
J
}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если переменный предиктор j
имеет условное многомерное распределение многочлена:
Программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
, и считает каждый уровень интервалом. Каждая комбинация предиктора/класса является отдельной, независимой случайной переменной многочлена.
Для каждого класса k
, экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка, сохраненного в CategoricalLevels {
.j
}
Программное обеспечение хранит вероятность тот предиктор j
, в классе k
, имеет уровень L в свойстве DistributionParameters {
, для всех уровней в k
J
}CategoricalLevels {
. Используя дополнение, сглаживающее [2], предполагаемая вероятностьj
}
где:
который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.
nk является количеством наблюдений в классе k.
если xij = L, 0 в противном случае.
вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
mj является количеством отличных уровней в предикторе j.
mk является взвешенным количеством наблюдений в классе k.
[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.
[2] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
Эта функция поддерживает высокие массивы с ограничениями:
Поддерживаемые синтаксисы:
Mdl = fitcnb(Tbl,Y)
Mdl = fitcnb(X,Y)
Mdl = fitcnb(___,Name,Value)
Опции, связанные с плотностью ядра, перекрестной проверкой и гипероптимизацией параметров управления, не поддерживаются. Поддерживаемые аргументы пары "имя-значение":
'DistributionNames'
— 'kernel'
значение не поддерживается.
'CategoricalPredictors'
'Cost'
'PredictorNames'
'Prior'
'ResponseName'
'ScoreTransform'
'Weights'
— Значение должно быть длинным массивом.
Для получения дополнительной информации смотрите Длинные массивы для Данных, которые не помещаются в память.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент значения имени в вызове fitcnb
функция.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для получения общей информации о параллельных вычислениях, смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationNaiveBayes
| predict
| ClassificationPartitionedModel
| templateNaiveBayes
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.