Тренировать мультиклассную наивную модель Байеса
возвращает многоклассовую наивную модель Байеса (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% ирисов - сетоза, 20% - версиколор, а 30% - виргиника. Эту информацию можно включить, указав это распределение в качестве предварительной вероятности во время обучения.
Тренируйте наивного Байеса классификатора. Укажите порядок классов и распределение вероятностей предыдущих классов.
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 соответствует числовому вектору, содержащему среднее и стандартное отклонение каждого распределения, например, среднее и стандартное отклонение для ширины чашелистиков сетозы радужной оболочки равно 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 модель. Можно задать параметры для наивных двоичных учеников Bayes, используя те же аргументы пары имя-значение, что и для fitcnb.
Сравните ошибку k-кратной классификации из выборки (доля неправильно классифицированных наблюдений).
classErr1 = kfoldLoss(CVMdl1,'LossFun','ClassifErr')
classErr1 = 0.0533
classErr2 = kfoldLoss(CVMdl2,'LossFun','ClassifErr')
classErr2 = 0.0467
Mdl2 имеет меньшую ошибку обобщения.
Некоторые фильтры нежелательной почты классифицируют входящее сообщение как нежелательное в зависимости от того, сколько раз слово или пунктуация (называемые маркерами) происходит в сообщении электронной почты. Предикторами являются частоты конкретных слов или знаков препинания в электронном письме. Поэтому предикторы составляют полиномиальные случайные величины.
Этот пример иллюстрирует классификацию с использованием наивных Байеса и полиномиальных предикторов.
Создание данных обучения
Предположим, вы заметили 1000 электронных писем и классифицировали их как спам или не как спам. Для этого случайным образом назначьте -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 путем оценки ошибки классификации ошибок.
isGenRate = resubLoss(Mdl,'LossFun','ClassifErr')
isGenRate = 0.0200
Степень неправильной классификации в выборке составляет 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
Уровень неправильной классификации вне выборки составляет 2,6%, что указывает на то, что классификатор достаточно хорошо обобщается.
В этом примере показано, как использовать OptimizeHyperparameters пара имя-значение, чтобы минимизировать потери перекрестной проверки в наивном классификаторе Байеса с использованием fitcnb. В примере используются данные радужки Фишера.
Загрузите данные радужки Фишера.
load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'};
Оптимизируйте классификацию с помощью параметров auto.
Для воспроизводимости задайте случайное начальное число и используйте '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.59202 | 0.053333 | 0.053333 | normal | - | | 2 | Best | 0.046667 | 0.78433 | 0.046667 | 0.049998 | kernel | 0.11903 | | 3 | Accept | 0.053333 | 0.12187 | 0.046667 | 0.046667 | normal | - | | 4 | Accept | 0.086667 | 0.3213 | 0.046667 | 0.046668 | kernel | 2.4506 | | 5 | Accept | 0.046667 | 0.28788 | 0.046667 | 0.046663 | kernel | 0.10449 | | 6 | Accept | 0.073333 | 0.28737 | 0.046667 | 0.046665 | kernel | 0.025044 | | 7 | Accept | 0.046667 | 0.32107 | 0.046667 | 0.046655 | kernel | 0.27647 | | 8 | Accept | 0.046667 | 0.29889 | 0.046667 | 0.046647 | kernel | 0.2031 | | 9 | Accept | 0.06 | 0.33168 | 0.046667 | 0.046658 | kernel | 0.44271 | | 10 | Accept | 0.046667 | 0.3879 | 0.046667 | 0.046618 | kernel | 0.2412 | | 11 | Accept | 0.046667 | 0.32713 | 0.046667 | 0.046619 | kernel | 0.071925 | | 12 | Accept | 0.046667 | 0.28496 | 0.046667 | 0.046612 | kernel | 0.083459 | | 13 | Accept | 0.046667 | 0.30127 | 0.046667 | 0.046603 | kernel | 0.15661 | | 14 | Accept | 0.046667 | 0.38462 | 0.046667 | 0.046607 | kernel | 0.25613 | | 15 | Accept | 0.046667 | 0.31145 | 0.046667 | 0.046606 | kernel | 0.17776 | | 16 | Accept | 0.046667 | 0.29788 | 0.046667 | 0.046606 | kernel | 0.13632 | | 17 | Accept | 0.046667 | 0.3987 | 0.046667 | 0.046606 | kernel | 0.077598 | | 18 | Accept | 0.046667 | 0.29776 | 0.046667 | 0.046626 | kernel | 0.25646 | | 19 | Accept | 0.046667 | 0.3424 | 0.046667 | 0.046626 | kernel | 0.093584 | | 20 | Accept | 0.046667 | 0.30273 | 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.31211 | 0.046667 | 0.046627 | kernel | 0.066532 | | 22 | Accept | 0.093333 | 0.33373 | 0.046667 | 0.046618 | kernel | 5.8968 | | 23 | Accept | 0.046667 | 0.33187 | 0.046667 | 0.046619 | kernel | 0.067045 | | 24 | Accept | 0.046667 | 0.3261 | 0.046667 | 0.04663 | kernel | 0.25281 | | 25 | Accept | 0.046667 | 0.33679 | 0.046667 | 0.04663 | kernel | 0.1473 | | 26 | Accept | 0.046667 | 0.27818 | 0.046667 | 0.046631 | kernel | 0.17211 | | 27 | Accept | 0.046667 | 0.31236 | 0.046667 | 0.046631 | kernel | 0.12457 | | 28 | Accept | 0.046667 | 0.43723 | 0.046667 | 0.046631 | kernel | 0.066659 | | 29 | Accept | 0.046667 | 0.29014 | 0.046667 | 0.046631 | kernel | 0.1081 | | 30 | Accept | 0.08 | 0.32716 | 0.046667 | 0.046628 | kernel | 1.1048 |


__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 56.4233 seconds
Total objective function evaluation time: 10.2689
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.78433
Best estimated feasible point (according to models):
DistributionNames Width
_________________ _______
kernel 0.25613
Estimated objective function value = 0.046628
Estimated function evaluation time = 0.32851
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-by-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' | Коробка (униформа) |
=0.5I{|x|≤1} |
'epanechnikov' | Епанечников |
I{|x|≤1} |
'normal' | Гауссовский |
0.5x2) |
'triangle' | Треугольный |
I{|x|≤1} |
Если указан 1-by-P строковый массив или массив ячеек, причем каждый элемент массива содержит какое-либо значение в таблице, то программа обучает классификатор, используя более плавный тип ядра в элементе j для функции j в X. Программное обеспечение игнорирует элементы Kernel не соответствует предиктору, распределение которого 'kernel'.
Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel' чтобы дополнительно указать Kernel, Support, или Width.
Пример: 'Kernel',{'epanechnikov','normal'}
'Support' - Поддержка плотности сглаживания ядра'unbounded' (по умолчанию) | 'positive' | строковый массив | массив ячеек | числовой вектор строкиПоддержка плотности сглаживания ядра, указанная как разделенная запятыми пара, состоящая из 'Support' и 'positive', 'unbounded', строковый массив, массив ячеек или числовой вектор строки. Программное обеспечение применяет плотность сглаживания ядра к указанной области.
В этой таблице представлены доступные параметры настройки области плотности сглаживания ядра.
| Стоимость | Описание |
|---|---|
| Вектор числовой строки 1 на 2 | Например, [L,U], где L и U являются конечными нижней и верхней границами соответственно для подложки плотности. |
'positive' | Поддержка плотности - это все положительные реальные значения. |
'unbounded' | Поддержка плотности - это все реальные значения. |
Если указан 1-by-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-by-P числовой вектор строки | Элемент j задает ширину всех уровней класса для предиктора j. |
| скаляр | Определяет пропускную способность для всех функций во всех классах. |
По умолчанию программа выбирает ширину по умолчанию автоматически для каждой комбинации предиктора и класса, используя значение, оптимальное для гауссова распределения. При указании Width и содержит NaNs, затем программа выбирает ширину для элементов, содержащих NaNs.
Необходимо указать, что по крайней мере один предиктор имеет распределение '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, Holdout, KFold, или Leaveout.
Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.
'Holdout' - Доля данных для проверки отсутствияДоля данных, используемых для проверки удержания, заданная как скалярное значение в диапазоне (0,1). При указании 'Holdout',pзатем программное обеспечение выполняет следующие действия:
Случайный выбор и резервирование p*100% данных в качестве данных проверки и обучение модели с использованием остальных данных.
Храните компактную обучаемую модель в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' - Количество складок10 (по умолчанию) | положительное целое значение больше 1Число сгибов для использования в модели с перекрестной проверкой, указанное как положительное целое значение больше 1. При указании 'KFold',kзатем программное обеспечение выполняет следующие действия:
Случайное разбиение данных на k наборы.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель с помощью другого k - 1 комплект.
Сохранить k компактные, обученные модели в k-by-1 клеточный вектор в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: 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 свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Leaveout','on'
'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанный как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в 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' - Стоимость неправильной классификацииСтоимость неправильной классификации точки, указанной как разделенная запятыми пара, состоящая из '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 зависит от способа ввода данных обучения.
Если вы поставляете 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' | log (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'}.
'all' - Оптимизируйте все подходящие параметры.
Строковый массив или массив ячеек допустимых имен параметров.
Вектор 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.
По умолчанию итеративное отображение отображается в командной строке, а графики отображаются в соответствии с количеством гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является log ( 1 + потери при перекрестной проверке) для регрессии и коэффициент неправильной классификации для классификации. Для управления итеративным отображением установите 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 | Логическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, что требует Toolbox™ параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация. | false |
Repartition | Логическое значение, указывающее, следует ли перераспределять перекрестную проверку при каждой итерации. Если
| false |
| Используйте не более одного из следующих трех имен полей. | ||
CVPartition | A 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 в наблюдении. Количество категорий (ячеек) в полиномиальной модели - это количество различных токенов (количество предикторов).
Наивный Байес - это алгоритм классификации, который применяет оценку плотности к данным.
Алгоритм использует теорему Байеса, и (наивно) предполагает, что предикторы условно независимы, учитывая класс. Хотя это предположение обычно нарушается на практике, наивные классификаторы Байеса, как правило, дают апостериорные распределения, которые устойчивы к смещенным оценкам плотности класса, особенно если апостериор равен 0,5 (граница принятия решения) [1].
Наивные байесовские классификаторы присваивают наблюдения наиболее вероятному классу (другими словами, максимальному правилу апостериорного решения). В явном виде алгоритм выполняет следующие шаги:
Оцените плотности предикторов в каждом классе.
Модель задних вероятностей по правилу Байеса. То есть для всех k = 1,...,K,
k) ∏j=1PP (Xj 'Y = k),
где:
Y - случайная величина, соответствующая индексу класса наблюдения.
X1,...,XP являются случайными предикторами наблюдения.
k) - предшествующая вероятность того, что индекс класса равен k.
Классифицируйте наблюдение, оценивая заднюю вероятность для каждого класса, а затем назначьте наблюдение классу, дающему максимальную заднюю вероятность.
Если предсказатели составляют multinomial распределение, то следующий XP'Y=k), XP'Y=k) является функцией массы вероятности multinomial распределения.
Для классификации данных на основе подсчета, таких как модель сумки маркеров, используйте полиномиальное распределение (например, set-of-tokens). 'DistributionNames','mn').
После обучения модели можно создать код C/C + +, который предсказывает метки для новых данных. Для создания кода C/C + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода .
При указании 'DistributionNames','mn' при обучении Mdl использование fitcnb, то программное обеспечение подходит для полиномиального распределения с использованием модели мешков токенов. Программа сохраняет вероятность того, что маркер j появляется в классе k в свойстве DistributionParameters{. При использовании аддитивного сглаживания [2] оценочная вероятность равнаk,j}
cj' kP + ck,
где:
который является взвешенным числом вхождений маркера j в классе k.
nk - количество наблюдений в классе k.
- вес для наблюдения. Программное обеспечение нормализует веса внутри класса таким образом, что они суммируются с предыдущей вероятностью для этого класса.
общее взвешенное число вхождений всех маркеров в классе k.
При указании 'DistributionNames','mvmn' при обучении Mdl использование fitcnb, то:
Для каждого предиктора программное обеспечение собирает список уникальных уровней, сохраняет отсортированный список в CategoricalLevelsи рассматривает каждый уровень как ячейку. Каждая комбинация предиктор/класс является отдельной независимой полиномиальной случайной величиной.
Для предиктора j в классе k программное обеспечение подсчитывает экземпляры каждого категориального уровня с использованием списка, сохраненного в CategoricalLevels{.j}
Программное обеспечение сохраняет вероятность того, что предиктор j, в классе k, имеет уровень L в свойстве DistributionParameters{, для всех уровней в k,j}CategoricalLevels{. При использовании аддитивного сглаживания [2] оценочная вероятность равнаj}
L) mj + mk,
где:
kwi, который является взвешенным числом наблюдений, для которых предиктор j равен L в классе k.
nk - количество наблюдений в классе k.
} = 1, если xij = L, в противном случае 0.
- вес для наблюдения. Программное обеспечение нормализует веса внутри класса таким образом, что они суммируются с предыдущей вероятностью для этого класса.
mj - количество различных уровней в предикторе j.
mk - взвешенное число наблюдений в классе k.
[1] Хасти, Т., Р. Тибширани и Дж. Фридман. Элементы статистического обучения, второе издание. Нью-Йорк: Спрингер, 2008.
[2] Мэннинг, К. Д., П. Рагхаван и М. Шютце. Введение в поиск информации, Нью-Йорк: Cambridge University Press, 2008.
Эта функция поддерживает массивы tall с ограничениями:
Поддерживаются следующие синтаксисы:
Mdl = fitcnb(Tbl,Y)
Mdl = fitcnb(X,Y)
Mdl = fitcnb(___,Name,Value)
Параметры, связанные с плотностью ядра, перекрестной проверкой и оптимизацией гиперпараметров, не поддерживаются. Поддерживаемые аргументы пары имя-значение:
'DistributionNames' — 'kernel' значение не поддерживается.
'CategoricalPredictors'
'Cost'
'PredictorNames'
'Prior'
'ResponseName'
'ScoreTransform'
'Weights' - Значение должно быть высоким массивом.
Дополнительные сведения см. в разделе Tall Arrays for Out-of-Memory Data.
Чтобы выполнить параллельную оптимизацию гиперпараметров, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true) аргумент name-value в вызове этой функции.
Дополнительные сведения об оптимизации параллельных гиперпараметров см. в разделе Параллельная байесовская оптимизация.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с автоматической параллельной поддержкой (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.