Обучите мультикласс наивная модель 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 = @(x1,x2)reshape(mvnpdf([x1(:),x2(:)],Mu(j,:),Sigma(:,:,j)),size(x1)); fcontour(f,[xlim ylim]) % Draw contours for the multivariate normal distributions end h.XLim = cxlim; h.YLim = cylim; title('Naive Bayes Classifier -- Fisher''s Iris Data') xlabel('Petal Length (cm)') ylabel('Petal Width (cm)') legend('setosa','versicolor','virginica') hold off
Можно изменить распределение по умолчанию с помощью аргумента пары "имя-значение" 'DistributionNames'
. Например, если некоторые предикторы являются категориальными, то можно указать, что они многомерны, случайные переменные многочлена с помощью 'DistributionNames','mvmn'
.
Создайте наивный классификатор Байеса для ирисового набора данных Фишера. Кроме того, задайте априорные вероятности во время обучения.
Загрузите ирисовый набор данных Фишера.
load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'}; % Class order
X
числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y
массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.
По умолчанию предшествующее вероятностное распределение класса является относительной плотностью распределения классов в наборе данных, который в этом случае составляет 33% для каждой разновидности. Однако предположите, что вы знаете, что в населении 50% ирисовых диафрагм являются setosa, 20% являются versicolor, и 30% являются virginica. Можно включить эту информацию путем определения этого распределения как априорной вероятности во время обучения.
Обучите наивный классификатор Байеса. Задайте порядок класса и предшествующее вероятностное распределение класса.
prior = [0.5 0.2 0.3]; Mdl = fitcnb(X,Y,'ClassNames',classNames,'Prior',prior)
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl
обученный ClassificationNaiveBayes
классификатор, и некоторые его свойства появляется в Командном окне. Программное обеспечение обрабатывает предикторы как независимые, учитывая класс, и, по умолчанию, соответствует им использующий нормальные распределения.
Наивный алгоритм Бейеса не использует предшествующие вероятности класса во время обучения. Поэтому можно задать предшествующие вероятности класса после обучения с помощью записи через точку. Например, предположите, что вы хотите видеть разницу в производительности между моделью, которая использует предшествующие вероятности класса по умолчанию и модель, которая использует prior
.
Создайте нового наивного Бейеса, основанного на модели на Mdl
, и укажите, что предшествующее вероятностное распределение класса является эмпирическим распределением класса.
defaultPriorMdl = Mdl; FreqDist = cell2table(tabulate(Y)); defaultPriorMdl.Prior = FreqDist{:,3};
Программное обеспечение нормирует предшествующие вероятности класса, чтобы суммировать к 1
.
Оцените ошибку перекрестной проверки для обеих моделей с помощью 10-кратной перекрестной проверки.
rng(1); % For reproducibility
defaultCVMdl = crossval(defaultPriorMdl);
defaultLoss = kfoldLoss(defaultCVMdl)
defaultLoss = 0.0533
CVMdl = crossval(Mdl); Loss = kfoldLoss(CVMdl)
Loss = 0.0340
Mdl
выполняет лучше, чем defaultPriorMdl
.
Загрузите ирисовый набор данных Фишера.
load fisheriris
X = meas;
Y = species;
Обучите наивный классификатор Байеса с помощью каждого предиктора. Это - хорошая практика, чтобы задать порядок класса.
Mdl1 = fitcnb(X,Y,... 'ClassNames',{'setosa','versicolor','virginica'})
Mdl1 = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell} Properties, Methods
Mdl1.DistributionParameters
ans=3×4 cell
{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.77251 | 0.053333 | 0.053333 | normal | - | | 2 | Best | 0.046667 | 0.82779 | 0.046667 | 0.049998 | kernel | 0.11903 | | 3 | Accept | 0.053333 | 0.19136 | 0.046667 | 0.046667 | normal | - | | 4 | Accept | 0.086667 | 0.45537 | 0.046667 | 0.046668 | kernel | 2.4506 | | 5 | Accept | 0.046667 | 0.41741 | 0.046667 | 0.046663 | kernel | 0.10449 | | 6 | Accept | 0.073333 | 0.60659 | 0.046667 | 0.046665 | kernel | 0.025044 | | 7 | Accept | 0.046667 | 0.43422 | 0.046667 | 0.046655 | kernel | 0.27647 | | 8 | Accept | 0.046667 | 0.39421 | 0.046667 | 0.046647 | kernel | 0.2031 | | 9 | Accept | 0.06 | 0.41118 | 0.046667 | 0.046658 | kernel | 0.44271 | | 10 | Accept | 0.046667 | 0.39201 | 0.046667 | 0.046618 | kernel | 0.2412 | | 11 | Accept | 0.046667 | 0.4868 | 0.046667 | 0.046619 | kernel | 0.071925 | | 12 | Accept | 0.046667 | 0.39873 | 0.046667 | 0.046612 | kernel | 0.083459 | | 13 | Accept | 0.046667 | 0.47519 | 0.046667 | 0.046603 | kernel | 0.15661 | | 14 | Accept | 0.046667 | 0.59982 | 0.046667 | 0.046607 | kernel | 0.25613 | | 15 | Accept | 0.046667 | 0.46838 | 0.046667 | 0.046606 | kernel | 0.17776 | | 16 | Accept | 0.046667 | 0.42023 | 0.046667 | 0.046606 | kernel | 0.13632 | | 17 | Accept | 0.046667 | 0.36994 | 0.046667 | 0.046606 | kernel | 0.077598 | | 18 | Accept | 0.046667 | 0.3964 | 0.046667 | 0.046626 | kernel | 0.25646 | | 19 | Accept | 0.046667 | 0.56819 | 0.046667 | 0.046626 | kernel | 0.093584 | | 20 | Accept | 0.046667 | 0.59596 | 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.4107 | 0.046667 | 0.046627 | kernel | 0.066532 | | 22 | Accept | 0.093333 | 0.44915 | 0.046667 | 0.046618 | kernel | 5.8968 | | 23 | Accept | 0.046667 | 0.49188 | 0.046667 | 0.046619 | kernel | 0.067045 | | 24 | Accept | 0.046667 | 0.52897 | 0.046667 | 0.04663 | kernel | 0.25281 | | 25 | Accept | 0.046667 | 0.41745 | 0.046667 | 0.04663 | kernel | 0.1473 | | 26 | Accept | 0.046667 | 0.44048 | 0.046667 | 0.046631 | kernel | 0.17211 | | 27 | Accept | 0.046667 | 0.44017 | 0.046667 | 0.046631 | kernel | 0.12457 | | 28 | Accept | 0.046667 | 0.44328 | 0.046667 | 0.046631 | kernel | 0.066659 | | 29 | Accept | 0.046667 | 0.47331 | 0.046667 | 0.046631 | kernel | 0.1081 | | 30 | Accept | 0.08 | 0.41339 | 0.046667 | 0.046628 | kernel | 1.1048 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 58.3291 seconds. Total objective function evaluation time: 14.1911 Best observed feasible point: DistributionNames Width _________________ _______ kernel 0.11903 Observed objective function value = 0.046667 Estimated objective function value = 0.046628 Function evaluation time = 0.82779 Best estimated feasible point (according to models): DistributionNames Width _________________ _______ kernel 0.25613 Estimated objective function value = 0.046628 Estimated function evaluation time = 0.45887
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
функция. Следующий код возвращает логический 1
TRUE
) для каждой переменной, которая имеет допустимое имя переменной.
cellfun(@isvarname,Tbl.Properties.VariableNames)
Tbl
не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName
функция.Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);
Типы данных: 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
объект раздела создается cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных используется в валидации затяжки, заданной как разделенная запятой пара, состоящая из 'Holdout'
и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double |
single
'KFold'
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как разделенная запятой пара, состоящая из 'KFold'
и положительное целочисленное значение, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в ячейках k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
'Leaveout'
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один", заданный как разделенная запятой пара, состоящая из 'Leaveout'
и 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations
свойство модели), программное обеспечение завершает эти шаги:
Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
'CategoricalPredictors'
— Категориальный список предикторов'all'
Категориальный список предикторов, заданный как разделенная запятой пара, состоящая из 'CategoricalPredictors'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел | Каждая запись в векторе является значением индекса, соответствующим столбцу данных о предикторе (X или Tbl ) это содержит категориальную переменную. |
Логический вектор | true запись означает что соответствующий столбец данных о предикторе (X или Tbl ) категориальная переменная. |
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждый элемент в массиве является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . |
все | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице (Tbl
), fitcnb
принимает, что переменная является категориальной, если это - логический вектор, категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X
), fitcnb
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их при помощи 'CategoricalPredictors'
аргумент пары "имя-значение".
Для идентифицированных категориальных предикторов, fitcnb
использует многомерные распределения многочлена. Для получения дополнительной информации смотрите DistributionNames
и Алгоритмы.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'ClassNames'
— Имена классов, чтобы использовать в обученииИмена классов, чтобы использовать в обучении, заданном как разделенная запятой пара, состоящая из 'ClassNames'
и категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
к:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
задавать порядок размерностей Cost
или порядок следования столбцов баллов классификации, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите что набор всех отличных имен классов в Y
{'a','b','c'}
. Обучать модель с помощью наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
набор всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Стоимость misclassificationСтоимость misclassification точки, заданной как разделенная запятой пара, состоящая из 'Cost'
и одно из следующего:
Квадратная матрица, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
(т.е. строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Чтобы задать класс заказывают для соответствующих строк и столбцов Cost
, дополнительно задайте ClassNames
аргумент пары "имя-значение".
Структуры
наличие двух полей: S.ClassNames
содержа названия группы как переменную того же типа как Y
, и S.ClassificationCosts
содержа матрицу стоимости.
Значением по умолчанию является Cost(i,j)=1
если i~=j
, и Cost(i,j)=0
если i=j
.
Пример: 'Cost',struct('ClassNames',{{'b','g'}},'ClassificationCosts',[0 0.5; 1 0])
Типы данных: single
| double
| struct
'PredictorNames'
— Имена переменного предиктораИмена переменного предиктора, заданные как разделенная запятой пара, состоящая из 'PredictorNames'
и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames'
зависит от способа, которым вы снабжаете обучающими данными.
Если вы предоставляете X
и Y
, затем можно использовать 'PredictorNames'
дать переменные предикторы в X
имена.
Порядок имен в PredictorNames
должен соответствовать порядку следования столбцов X
. Таким образом, PredictorNames{1}
имя X(:,1)
, PredictorNames{2}
имя X(:,2)
, и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию, PredictorNames
{'x1','x2',...}
.
Если вы предоставляете Tbl
, затем можно использовать 'PredictorNames'
выбрать который переменные предикторы использовать в обучении. Таким образом, fitcnb
использование только переменные предикторы в PredictorNames
и переменная отклика в обучении.
PredictorNames
должно быть подмножество Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию, PredictorNames
содержит имена всех переменных предикторов.
Это - хорошая практика, чтобы задать предикторы для обучения с помощью любого 'PredictorNames'
или formula
только.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'Prior'
— Априорные вероятности'empirical'
(значение по умолчанию) | 'uniform'
| вектор скалярных значений | структураАприорные вероятности для каждого класса, заданного как разделенная запятой пара, состоящая из 'Prior'
и значение в этой таблице.
Значение | Описание |
---|---|
'empirical' | Априорные вероятности класса являются частотами родственника класса в Y . |
'uniform' | Все априорные вероятности класса равны 1/K, где K является количеством классов. |
числовой вектор | Каждый элемент является априорной вероятностью класса. Закажите элементы согласно Mdl .ClassNames или задайте порядок с помощью ClassNames аргумент пары "имя-значение". Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1 . |
структура | Структура
|
Если вы устанавливаете значения для обоих Weights
и Prior
, веса повторно нормированы, чтобы составить в целом значение априорной вероятности в соответствующем классе.
Пример: 'Prior','uniform'
Типы данных: char |
string
| single
| double
| struct
'ResponseName'
— Имя переменной отклика'Y'
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как разделенная запятой пара, состоящая из 'ResponseName'
и вектор символов или скаляр строки.
Если вы предоставляете Y
, затем можно использовать 'ResponseName'
задавать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, затем вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char |
string
'ScoreTransform'
— Выиграйте преобразование'none'
(значение по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Выиграйте преобразование, заданное как разделенная запятой пара, состоящая из 'ScoreTransform'
и вектор символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (x / (1 – x)) |
'ismax' | Устанавливает счет к классу с самым большим счетом к 1 , и устанавливает музыку ко всем другим классам к 0 |
'logit' | 1/(1 + e –x) |
'none' или 'identity' | x (никакое преобразование) |
'sign' | – 1 для x <0 0 для x = 0 1 для x> 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает счет к классу с самым большим счетом к 1 , и устанавливает музыку ко всем другим классам к –1 |
'symmetriclogit' | 2/(1 + e –x) – 1 |
Для функции MATLAB или функции вы задаете, используете ее указатель на функцию в счете, преобразовывают. Указатель на функцию должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).
Пример: 'ScoreTransform','logit'
Типы данных: char |
string
| function_handle
'Weights'
— Веса наблюденияTbl
Веса наблюдения, заданные как разделенная запятой пара, состоящая из 'Weights'
и числовой вектор положительных значений или имя переменной в Tbl
. Программное обеспечение взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должен равняться количеству строк X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть имя переменной в Tbl
это содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или скаляр строки. Например, если вектор весов W
хранится как Tbl.W
, затем задайте его как 'W'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая W
, как предикторы или ответ, когда обучение модель.
Программное обеспечение нормирует Weights
суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию, Weights
единицы (
, где 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'
поле
, 'epanechnikov'
, и 'triangle'
.
Установите параметры не по умолчанию путем передачи вектора optimizableVariable
объекты, которые имеют значения не по умолчанию. Например,
load fisheriris params = hyperparameters('fitcnb',meas,species); params(2).Range = [1e-2,1e2];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите Verbose
поле 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение". Чтобы управлять графиками, установите ShowPlots
поле 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение".
Для примера смотрите, Оптимизируют Наивный классификатор Байеса.
Пример: 'auto'
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как разделенная запятой пара, состоящая из 'HyperparameterOptimizationOptions'
и структура. Этот аргумент изменяет эффект OptimizeHyperparameters
аргумент пары "имя-значение". Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' , и целая сетка для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10
|
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer 'bayesopt' , затем ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты когда Optimizer 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменной является BayesianOptimization объект. | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите | 1
|
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно дает к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | cvpartition объект, как создано cvpartition . | 'Kfold',5 если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представление части затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная наивная модель классификации БейесаClassificationNaiveBayes
объект модели | ClassificationPartitionedModel
перекрестный подтвержденный объект моделиОбученная наивная модель классификации Бейеса, возвращенная как ClassificationNaiveBayes
объект модели или ClassificationPartitionedModel
перекрестный подтвержденный объект модели.
Если вы устанавливаете какой-либо из аргументов пары "имя-значение" KFold
, Holdout
, CrossVal
, или CVPartition
, затем Mdl
ClassificationPartitionedModel
перекрестный подтвержденный объект модели. В противном случае, Mdl
ClassificationNaiveBayes
объект модели.
К ссылочным свойствам Mdl
, используйте запись через точку. Например, чтобы получить доступ к предполагаемым параметрам распределения, введите Mdl.DistributionParameters
.
В модели сумки лексем значении предиктора j является неотрицательным количеством случаев маркерного j в этом наблюдении. Количество категорий (интервалы) в этой модели многочлена является количеством отличных лексем, то есть, количеством предикторов.
Naive Bayes является алгоритмом классификации, который применяет оценку плотности данными.
Алгоритм усиливает теорему Бейеса, и (наивно) принимает, что предикторы условно независимы, учитывая класс. Хотя предположение обычно нарушается на практике, наивные классификаторы Байеса имеют тенденцию давать к апостериорным распределениям, которые устойчивы к смещенным оценкам плотности класса, особенно где следующее 0.5 (контур решения) [1].
Наивные классификаторы Байеса присваивают наблюдения самому вероятному классу (другими словами, правило решения maximum a posteriori). Явным образом, алгоритм:
Оценивает плотность предикторов в каждом классе.
Апостериорные вероятности моделей согласно правилу Бейеса. Таким образом, для всего k = 1..., K,
где:
Y является случайной переменной, соответствующей индексу класса наблюдения.
X 1..., XP является случайными предикторами наблюдения.
априорная вероятность, что индексом класса является k.
Классифицирует наблюдение путем оценки апостериорной вероятности для каждого класса, и затем присваивает наблюдение классу, дающему к максимальной апостериорной вероятности.
Если предикторы составляют распределение многочлена, то апостериорная вероятность где функция вероятностной меры распределения многочлена.
Для классификации основанных на количестве данных, таких как модель сумки лексем, используют распределение многочлена (например, устанавливают 'DistributionNames','mn'
).
После обучения модель можно сгенерировать код C/C++, который предсказывает метки для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
Если вы задаете 'DistributionNames','mn'
когда учебный Mdl
использование fitcnb
, затем программное обеспечение соответствует распределению многочлена с помощью модели сумки лексем. Программное обеспечение хранит вероятность тот маркерный j
появляется в классе k
в свойстве DistributionParameters {
. Используя дополнение, сглаживающее [2], предполагаемая вероятностьk
J
}
где:
который является взвешенным количеством случаев маркерного j в классе k.
nk является количеством наблюдений в классе k.
вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.
который является общим взвешенным количеством случаев всех лексем в классе k.
Если вы задаете 'DistributionNames','mvmn'
когда учебный Mdl
использование fitcnb
затем:
Для каждого предиктора программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels
, и считает каждый уровень интервалом. Каждая комбинация предиктора/класса является отдельной, независимой случайной переменной многочлена.
Для предиктора j
в классе 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] Укомплектование людьми, C. D. П. Рэгэвэн и М. Шюц. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.
Эта функция поддерживает высокие массивы с ограничениями:
Поддерживаемые синтаксисы:
Mdl = fitcnb(Tbl,Y)
Mdl = fitcnb(X,Y)
Mdl = fitcnb(___,Name,Value)
Опции, связанные с плотностью ядра, перекрестной проверкой и гипероптимизацией параметров управления, не поддержаны. Поддерживаемые аргументы пары "имя-значение":
'DistributionNames'
— 'kernel'
значение не поддержано.
'CategoricalPredictors'
'Cost'
'PredictorNames'
'Prior'
'ResponseName'
'ScoreTransform'
'Weights'
— Значение должно быть длинным массивом.
Для получения дополнительной информации смотрите Длинные массивы для Данных, которые не помещаются в память, (MATLAB).
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте 'HyperparameterOptions', struct('UseParallel',true)
аргумент пары "имя-значение" в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationNaiveBayes
| ClassificationPartitionedModel
| predict
| templateNaiveBayes
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.