fitcdiscr

Подгонка классификатора дискриминантного анализа

Описание

Mdl = fitcdiscr(Tbl,ResponseVarName) возвращает подобранную дискриминантную модель анализа, основанную на входных переменных (также известных как предикторы, функции или атрибуты), содержащихся в таблице Tbl и выход (ответ или метки), содержащийся в ResponseVarName.

Mdl = fitcdiscr(Tbl,formula) возвращает подобранную дискриминантную модель анализа, основанную на входных переменных, содержащихся в таблице Tbl. formula является объяснительной моделью отклика и подмножеством переменных предиктора в Tbl используется для подгонки Mdl.

Mdl = fitcdiscr(Tbl,Y) возвращает подобранную дискриминантную модель анализа, основанную на входных переменных, содержащихся в таблице Tbl и ответные Y.

пример

Mdl = fitcdiscr(X,Y) возвращает классификатор анализа дискриминантов на основе входных переменных X и ответные Y.

пример

Mdl = fitcdiscr(___,Name,Value) подходит для классификатора с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение", с использованием любого из предыдущих синтаксисов. Например, можно оптимизировать гиперпараметры, чтобы минимизировать потери перекрестной валидации модели или указать стоимость неправильной классификации, предыдущие вероятности для каждого класса или веса наблюдений.

Примеры

свернуть все

Загрузите набор данных радужки Фишера.

load fisheriris

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

Mdl = fitcdiscr(meas,species)
Mdl = 
  ClassificationDiscriminant
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 150
              DiscrimType: 'linear'
                       Mu: [3x4 double]
                   Coeffs: [3x3 struct]


  Properties, Methods

Mdl является ClassificationDiscriminant модель. Для доступа к его свойствам используйте запись через точку. Для примера отобразите средства группы для каждого предиктора.

Mdl.Mu
ans = 3×4

    5.0060    3.4280    1.4620    0.2460
    5.9360    2.7700    4.2600    1.3260
    6.5880    2.9740    5.5520    2.0260

Чтобы предсказать метки для новых наблюдений, передайте Mdl и данные предиктора в predict.

В этом примере показано, как автоматически оптимизировать гиперпараметры с помощью fitcdiscr. В примере используются данные радужки глаза Фишера.

Загрузите данные.

load fisheriris

Найдите гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке с помощью автоматической оптимизации гипероптимизации параметров управления.

Для воспроизводимости установите случайный seed и используйте 'expected-improvement-plus' функция сбора.

rng(1)
Mdl = fitcdiscr(meas,species,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',...
    struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        Delta |        Gamma |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.66667 |     0.55243 |     0.66667 |     0.66667 |       13.261 |      0.25218 |
|    2 | Best   |        0.02 |     0.17844 |        0.02 |    0.064227 |   2.7404e-05 |     0.073264 |
|    3 | Accept |        0.04 |     0.15491 |        0.02 |    0.020084 |   3.2455e-06 |      0.46974 |
|    4 | Accept |     0.66667 |     0.11846 |        0.02 |    0.020118 |       14.879 |      0.98622 |
|    5 | Accept |    0.046667 |     0.10819 |        0.02 |    0.019907 |   0.00031449 |      0.97362 |
|    6 | Accept |        0.04 |     0.11485 |        0.02 |    0.028438 |   4.5092e-05 |      0.43616 |
|    7 | Accept |    0.046667 |     0.10354 |        0.02 |    0.031424 |   2.0973e-05 |       0.9942 |
|    8 | Accept |        0.02 |      0.1555 |        0.02 |    0.022424 |   1.0554e-06 |    0.0024286 |
|    9 | Accept |        0.02 |     0.12372 |        0.02 |    0.021105 |   1.1232e-06 |   0.00014039 |
|   10 | Accept |        0.02 |     0.13178 |        0.02 |    0.020948 |   0.00011837 |    0.0032994 |
|   11 | Accept |        0.02 |      0.1158 |        0.02 |    0.020172 |   1.0292e-06 |     0.027725 |
|   12 | Accept |        0.02 |     0.22338 |        0.02 |    0.020105 |   9.7792e-05 |    0.0022817 |
|   13 | Accept |        0.02 |     0.15953 |        0.02 |    0.020038 |   0.00036014 |    0.0015136 |
|   14 | Accept |        0.02 |     0.09463 |        0.02 |    0.019597 |   0.00021059 |    0.0044789 |
|   15 | Accept |        0.02 |     0.09261 |        0.02 |    0.019461 |   1.1911e-05 |    0.0010135 |
|   16 | Accept |        0.02 |     0.11499 |        0.02 |     0.01993 |    0.0017896 |   0.00071115 |
|   17 | Accept |        0.02 |      0.1367 |        0.02 |    0.019551 |   0.00073745 |    0.0066899 |
|   18 | Accept |        0.02 |     0.11117 |        0.02 |    0.019776 |   0.00079304 |   0.00011509 |
|   19 | Accept |        0.02 |     0.13474 |        0.02 |    0.019678 |     0.007292 |    0.0007911 |
|   20 | Accept |    0.046667 |     0.15404 |        0.02 |    0.019785 |    0.0074408 |      0.99945 |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        Delta |        Gamma |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |        0.02 |     0.10375 |        0.02 |    0.019043 |    0.0036004 |    0.0024547 |
|   22 | Accept |        0.02 |     0.10974 |        0.02 |    0.019755 |   2.5238e-05 |    0.0015542 |
|   23 | Accept |        0.02 |     0.11078 |        0.02 |      0.0191 |   1.5478e-05 |    0.0026899 |
|   24 | Accept |        0.02 |      0.1206 |        0.02 |    0.019081 |    0.0040557 |   0.00046815 |
|   25 | Accept |        0.02 |     0.20069 |        0.02 |    0.019333 |    2.959e-05 |    0.0011358 |
|   26 | Accept |        0.02 |     0.10306 |        0.02 |    0.019369 |   2.3111e-06 |    0.0029205 |
|   27 | Accept |        0.02 |     0.10212 |        0.02 |    0.019455 |   3.8898e-05 |    0.0011665 |
|   28 | Accept |        0.02 |     0.17711 |        0.02 |    0.019449 |    0.0035925 |    0.0020278 |
|   29 | Accept |     0.66667 |     0.14566 |        0.02 |    0.019479 |       998.93 |     0.064276 |
|   30 | Accept |        0.02 |      0.1077 |        0.02 |     0.01947 |   8.1557e-06 |    0.0008004 |

Figure contains an axes. The axes with title Min objective vs. Number of function evaluations contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

Figure contains an axes. The axes with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 50.4135 seconds
Total objective function evaluation time: 4.3606

Best observed feasible point:
      Delta        Gamma  
    __________    ________

    2.7404e-05    0.073264

Observed objective function value = 0.02
Estimated objective function value = 0.022693
Function evaluation time = 0.17844

Best estimated feasible point (according to models):
      Delta         Gamma  
    __________    _________

    2.5238e-05    0.0015542

Estimated objective function value = 0.01947
Estimated function evaluation time = 0.13427
Mdl = 
  ClassificationDiscriminant
                         ResponseName: 'Y'
                CategoricalPredictors: []
                           ClassNames: {'setosa'  'versicolor'  'virginica'}
                       ScoreTransform: 'none'
                      NumObservations: 150
    HyperparameterOptimizationResults: [1x1 BayesianOptimization]
                          DiscrimType: 'linear'
                                   Mu: [3x4 double]
                               Coeffs: [3x3 struct]


  Properties, Methods

Подгонка достигает около 2% потерь при 5-кратной перекрестной валидации по умолчанию.

В этом примере показано, как автоматически оптимизировать гиперпараметры модели дискриминантного анализа с помощью длинный массив. Набор выборочных данных airlinesmall.csv является большим набором данных, который содержит табличный файл данных о рейсах авиакомпании. Этот пример создает длинная таблица, содержащий данные, и использует его, чтобы запустить процедуру оптимизации.

При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Если вы хотите запустить пример с помощью локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, можно изменить глобальное окружение выполнения, используя mapreducer функция.

Создайте datastore, которое ссылается на расположение папки с данными. Выберите подмножество переменных для работы и обработки 'NA' значения как отсутствующие данные, так что datastore заменяет их на NaN значения. Создайте длинная таблица, который содержит данные в datastore.

ds = datastore('airlinesmall.csv');
ds.SelectedVariableNames = {'Month','DayofMonth','DayOfWeek',...
                            'DepTime','ArrDelay','Distance','DepDelay'};
ds.TreatAsMissing = 'NA';
tt  = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

tt =

  M×7 tall table

    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    Distance    DepDelay
    _____    __________    _________    _______    ________    ________    ________

     10          21            3          642          8         308          12   
     10          26            1         1021          8         296           1   
     10          23            5         2055         21         480          20   
     10          23            5         1332         13         296          12   
     10          22            4          629          4         373          -1   
     10          28            3         1446         59         308          63   
     10           8            4          928          3         447          -2   
     10          10            6          859         11         954          -1   
      :          :             :           :          :           :           :
      :          :             :           :          :           :           :

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

Y = tt.DepDelay > 10 % Class labels
Y =

  M×1 tall logical array

   1
   0
   1
   1
   0
   1
   0
   0
   :
   :

Создайте длинный массив для данных предиктора.

X = tt{:,1:end-1} % Predictor data
X =

  M×6 tall double matrix

          10          21           3         642           8         308
          10          26           1        1021           8         296
          10          23           5        2055          21         480
          10          23           5        1332          13         296
          10          22           4         629           4         373
          10          28           3        1446          59         308
          10           8           4         928           3         447
          10          10           6         859          11         954
          :           :            :          :           :           :
          :           :            :          :           :           :

Удалите строки в X и Y которые содержат отсутствующие данные.

R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:end-1); 
Y = R(:,end); 

Стандартизируйте переменные предиктора.

Z = zscore(X);

Оптимизируйте гиперпараметры автоматически с помощью 'OptimizeHyperparameters' аргумент пары "имя-значение". Нахождение оптимального 'DiscrimType' значение, которое минимизирует потери перекрестной валидации удержания. (Определение 'auto' использует 'DiscrimType'.) Для воспроизводимости используйте 'expected-improvement-plus' и установите начальные значения генераторов случайных чисел, используя rng и tallrng. Результаты могут варьироваться в зависимости от количества рабочих процессов и окружения выполнения для длинных массивов. Для получения дополнительной информации смотрите Управление, Где Ваш Код Запуски.

rng('default') 
tallrng('default')
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(Z,Y,...
    'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('Holdout',0.3,...
    'AcquisitionFunctionName','expected-improvement-plus'))
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 2: Completed in 5.7 sec
- Pass 2 of 2: Completed in 4.3 sec
Evaluation completed in 16 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 2.5 sec
Evaluation completed in 2.8 sec
|======================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  DiscrimType |
|      | result |             | runtime     | (observed)  | (estim.)    |              |
|======================================================================================|
|    1 | Best   |     0.11354 |      25.315 |     0.11354 |     0.11354 |    quadratic |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.5 sec
Evaluation completed in 2.7 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.4 sec
Evaluation completed in 1.6 sec
|    2 | Accept |     0.11354 |      7.9367 |     0.11354 |     0.11354 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 2 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.78 sec
Evaluation completed in 0.91 sec
|    3 | Accept |     0.12869 |      6.5057 |     0.11354 |     0.11859 | pseudoLinear |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.9 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 1.4 sec
|    4 | Accept |     0.12745 |      6.4167 |     0.11354 |      0.1208 |   diagLinear |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 0.93 sec
|    5 | Accept |     0.12869 |      6.1236 |     0.11354 |     0.12238 |       linear |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.75 sec
Evaluation completed in 0.9 sec
|    6 | Best   |     0.11301 |      5.4147 |     0.11301 |     0.12082 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.82 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.77 sec
Evaluation completed in 0.89 sec
|    7 | Accept |     0.11301 |       5.297 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.84 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 0.93 sec
|    8 | Accept |     0.11301 |      5.6152 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 2.1 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.75 sec
Evaluation completed in 0.88 sec
|    9 | Accept |     0.11301 |      5.9147 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 1.4 sec
|   10 | Accept |     0.11301 |      6.0504 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.82 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 1.4 sec
|   11 | Accept |     0.11301 |      5.9595 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.76 sec
Evaluation completed in 0.91 sec
|   12 | Accept |     0.11301 |      5.4266 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.75 sec
Evaluation completed in 0.87 sec
|   13 | Accept |     0.11301 |      5.3869 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.83 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 0.97 sec
|   14 | Accept |     0.11301 |      5.4876 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.73 sec
Evaluation completed in 0.85 sec
|   15 | Accept |     0.11301 |      5.4052 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.78 sec
Evaluation completed in 0.9 sec
|   16 | Accept |     0.11301 |      5.4434 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 0.93 sec
|   17 | Accept |     0.11301 |      5.5804 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.94 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.79 sec
Evaluation completed in 0.92 sec
|   18 | Accept |     0.11354 |       5.616 |     0.11301 |     0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.76 sec
Evaluation completed in 0.88 sec
|   19 | Accept |     0.11301 |      5.4031 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.76 sec
Evaluation completed in 1.4 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.75 sec
Evaluation completed in 0.88 sec
|   20 | Accept |     0.11301 |      5.1974 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.77 sec
Evaluation completed in 1.4 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.75 sec
Evaluation completed in 0.87 sec
|======================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  DiscrimType |
|      | result |             | runtime     | (observed)  | (estim.)    |              |
|======================================================================================|
|   21 | Accept |     0.11301 |      5.1418 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 2 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.73 sec
Evaluation completed in 0.86 sec
|   22 | Accept |     0.11301 |      5.9864 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.78 sec
Evaluation completed in 0.91 sec
|   23 | Accept |     0.11354 |      5.5656 |     0.11301 |     0.11301 |    quadratic |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.82 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.77 sec
Evaluation completed in 0.9 sec
|   24 | Accept |     0.11354 |      5.3012 |     0.11301 |     0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.4 sec
Evaluation completed in 2.1 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.77 sec
Evaluation completed in 0.9 sec
|   25 | Accept |     0.11301 |      6.2276 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.77 sec
Evaluation completed in 0.89 sec
|   26 | Accept |     0.11301 |      5.5308 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.92 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   27 | Accept |     0.11301 |      5.7396 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.83 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.78 sec
Evaluation completed in 0.9 sec
|   28 | Accept |     0.11354 |      5.4403 |     0.11301 |     0.11301 |    quadratic |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.81 sec
Evaluation completed in 0.93 sec
|   29 | Accept |     0.11301 |      5.3572 |     0.11301 |     0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.6 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.74 sec
Evaluation completed in 0.85 sec
|   30 | Accept |     0.11354 |      5.2718 |     0.11301 |     0.11301 |    quadratic |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 229.5689 seconds.
Total objective function evaluation time: 191.058

Best observed feasible point:
     DiscrimType 
    _____________

    diagQuadratic

Observed objective function value = 0.11301
Estimated objective function value = 0.11301
Function evaluation time = 5.4147

Best estimated feasible point (according to models):
     DiscrimType 
    _____________

    diagQuadratic

Estimated objective function value = 0.11301
Estimated function evaluation time = 5.784

Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.76 sec
Evaluation completed in 1.4 sec
Mdl = 
  CompactClassificationDiscriminant
           PredictorNames: {'x1'  'x2'  'x3'  'x4'  'x5'  'x6'}
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: [0 1]
           ScoreTransform: 'none'
              DiscrimType: 'diagQuadratic'
                       Mu: [2×6 double]
                   Coeffs: [2×2 struct]


  Properties, Methods

FitInfo = struct with no fields.


HyperparameterOptimizationResults = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @createObjFcn/tallObjFcn
              VariableDescriptions: [1×1 optimizableVariable]
                           Options: [1×1 struct]
                      MinObjective: 0.1130
                   XAtMinObjective: [1×1 table]
             MinEstimatedObjective: 0.1130
          XAtMinEstimatedObjective: [1×1 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 229.5689
                         NextPoint: [1×1 table]
                            XTrace: [30×1 table]
                    ObjectiveTrace: [30×1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30×1 cell}
      ObjectiveEvaluationTimeTrace: [30×1 double]
                IterationTimeTrace: [30×1 double]
                        ErrorTrace: [30×1 double]
                  FeasibilityTrace: [30×1 logical]
       FeasibilityProbabilityTrace: [30×1 double]
               IndexOfMinimumTrace: [30×1 double]
             ObjectiveMinimumTrace: [30×1 double]
    EstimatedObjectiveMinimumTrace: [30×1 double]

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

свернуть все

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

  • Если Tbl содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName.

  • Если Tbl содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl в качестве предикторов задайте формулу при помощи formula.

  • Если Tbl не содержит переменную отклика, затем задает переменную отклика при помощи Y. Длина переменной отклика и количество строк в Tbl должно быть равным.

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

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

Вы должны задать ResponseVarName как вектор символов или строковый скаляр. Для примера, если переменная отклика Y хранится как Tbl.Y, затем укажите его следующим 'Y'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая Y, как предикторы при обучении модели.

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

Хорошей практикой является определение порядка классов при помощи ClassNames аргумент имя-значение.

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

Объяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную отклика, и x1, x2, и x3 представляют переменные предиктора.

Чтобы задать подмножество переменных в Tbl в качестве предикторов для настройки модели используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl которые не появляются в formula.

Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

Метки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов. Каждая строка Y представляет классификацию соответствующей строки X.

Программное обеспечение рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Y чтобы быть отсутствующими значениями. Следовательно, программное обеспечение не обучается, используя наблюдения с отсутствующим ответом.

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

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

fitcdiscr рассматривает NaN значения в X как отсутствующие значения. fitcdiscr не использует наблюдения с отсутствующими значениями для X в подгонке.

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

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

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

Пример: 'DiscrimType','quadratic','SaveMemory','on' задает квадратичный классификатор дискриминантов и не хранит матрицу ковариации в объекте выхода.

Примечание

Вы не можете использовать какой-либо аргумент пары "имя-значение" перекрестной проверки наряду с 'OptimizeHyperparameters' аргумент пары "имя-значение". Можно изменить перекрестную валидацию для 'OptimizeHyperparameters' только при помощи 'HyperparameterOptimizationOptions' аргумент пары "имя-значение".

Параметры модели

свернуть все

Имена классов, используемых для обучения, заданные как категориальные символьные или строковые массивы; логический или числовой вектор; или массив ячеек из векторов символов. 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(i,j) - стоимость классификации точки в класс j если его класс true i (т.е. строки соответствуют истинному классу, а столбцы - предсказанному классу). Чтобы задать порядок классов для соответствующих строк и столбцов Cost, дополнительно задайте ClassNames аргумент пары "имя-значение".

  • Структурные S имеющий два поля: S.ClassNames содержащие имена групп как переменные того же типа, что и Y, и S.ClassificationCosts содержащая матрицу затрат.

Значение по умолчанию является Cost(i,j)=1 если i~=j, и Cost(i,j)=0 если i=j.

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

Линейный порог коэффициента, заданный как разделенная разделенными запятой парами, состоящая из 'Delta' и неотрицательное скалярное значение. Если коэффициент Mdl имеет величину меньше Delta, Mdl устанавливает этот коэффициент равным 0, и можно исключить из модели соответствующий предиктор. Задайте Delta к более высокому значению, чтобы исключить больше предикторов.

Delta должен быть 0 для квадратичных дискриминантных моделей.

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

Дискриминантный тип, заданный как разделенная разделенными запятой парами, состоящая из 'DiscrimType' и вектор символов или строковый скаляр в этой таблице.

ЗначениеОписаниеЛечение Ковариации предиктора
'linear'Регуляризованный линейный дискриминантный анализ (LDA)
  • Все классы имеют одинаковую ковариационную матрицу.

  • Σ^γ=(1γ)Σ^+γdiag(Σ^).

    Σ^ - эмпирическая, объединенная ковариационная матрица, и γ является количеством регуляризации.

'diaglinear'LDAВсе классы имеют одинаковую диагональную ковариационную матрицу.
'pseudolinear'LDAВсе классы имеют одинаковую ковариационную матрицу. Программа инвертирует ковариационную матрицу, используя псевдоанверс.
'quadratic'Квадратичный дискриминантный анализ (QDA)Ковариационные матрицы могут варьироваться среди классов.
'diagquadratic'QDAКовариационные матрицы диагональны и могут варьироваться среди классов.
'pseudoquadratic'QDAКовариационные матрицы могут варьироваться среди классов. Программа инвертирует ковариационную матрицу, используя псевдоанверс.

Примечание

Чтобы использовать регуляризацию, необходимо задать 'linear'. Чтобы задать количество регуляризации, используйте Gamma аргумент пары "имя-значение".

Пример: 'DiscrimType','quadratic'

Coeffs флаг свойства, заданный как разделенная разделенными запятой парами, состоящая из 'FillCoeffs' и 'on' или 'off'. Установка флага на 'on' заполняет Coeffs свойство в объекте классификатора. Это может быть интенсивным в вычислительном отношении, особенно при перекрестной проверке. Значение по умолчанию является 'on', если вы не задаете пару "имя-значение" перекрестной проверки, в этом случае флаг устанавливается на 'off' по умолчанию.

Пример: 'FillCoeffs','off'

Количество регуляризации для применения при оценке ковариационной матрицы предикторов, заданное как разделенная разделенными запятой парами, состоящая из 'Gamma' и скалярное значение в интервале [0,1]. Gamma обеспечивает более мелкий контроль над ковариацией матрицы, чем DiscrimType.

  • Если вы задаете 0, тогда программное обеспечение не использует регуляризацию, чтобы настроить ковариационную матрицу. То есть программное обеспечение оценивает и использует неограниченную, эмпирическую ковариационную матрицу.

    • Для линейного дискриминантного анализа, если эмпирическая ковариационная матрица сингулярна, то программное обеспечение автоматически применяет минимальную регуляризацию, необходимую для инвертирования ковариационной матрицы. Выбранную сумму регуляризации можно просмотреть путем ввода Mdl.Gamma в командной строке.

    • Для квадратичного дискриминантного анализа, если по крайней мере один класс имеет эмпирическую ковариационную матрицу, которая сингулярна, то программа выдает ошибку.

  • Если вы задаете значение в интервале (0,1), то необходимо реализовать линейный дискриминантный анализ, в противном случае программа выдает ошибку. Следовательно, программное обеспечение устанавливает DiscrimType на 'linear'.

  • Если вы задаете 1затем программное обеспечение использует максимальную регуляризацию для ковариации матрицы. То есть программное обеспечение ограничивает матрицу ковариации диагональю. Также можно задать DiscrimType на 'diagLinear' или 'diagQuadratic' для диагональных ковариационных матриц.

Пример: 'Gamma',1

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

Имена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность 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 выбрать, какие переменные предиктора использовать в обучении. То есть, fitcdiscr использует только переменные предиктора в PredictorNames и переменной отклика во время обучения.

    • PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной отклика.

    • По умолчанию PredictorNames содержит имена всех переменных предиктора.

    • Хорошей практикой является определение предикторов для обучения с использованием любой из 'PredictorNames' или formula, но не то и другое.

Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

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

Предыдущие вероятности для каждого класса, заданные как разделенная разделенными запятой парами, состоящая из 'Prior' и значение в этой таблице.

ЗначениеОписание
'empirical'Предшествующие вероятности классов являются относительными частотами классов в Y.
'uniform'Все предыдущие вероятности классов равны 1/ K, где K - количество классов.
числовой векторКаждый элемент является классом предыдущей вероятности. Упорядочивайте элементы согласно Mdl.ClassNames или укажите порядок с помощью ClassNames аргумент пары "имя-значение". Программное обеспечение нормализует элементы так, что они суммируются с 1.
структура

Структурный S с двумя полями:

  • S.ClassNames содержит имена классов как переменная того же типа, что и Y.

  • S.ClassProbs содержит вектор соответствующих априорных вероятностей. Программное обеспечение нормализует элементы так, что они суммируются с 1.

Если вы задаете значения для обоих Weights и Priorвеса перенормированы, чтобы суммировать значение предшествующей вероятности в соответствующем классе.

Пример: 'Prior','uniform'

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

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

  • Если вы поставляете Y, тогда можно использовать 'ResponseName' чтобы задать имя для переменной отклика.

  • Если вы поставляете ResponseVarName или formula, тогда вы не можете использовать 'ResponseName'.

Пример: 'ResponseName','response'

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

Флаг для сохранения ковариационной матрицы, заданный как разделенная разделенными запятой парами, состоящая из 'SaveMemory' и любой из них 'on' или 'off'. Если вы задаете 'on', затем fitcdiscr не хранит полную ковариационную матрицу, но вместо этого хранит достаточно информации для вычисления матрицы. The predict метод вычисляет полную ковариационную матрицу для предсказания и не хранит матрицу. Если вы задаете 'off', затем fitcdiscr вычисляет и хранит полную ковариационную матрицу в Mdl.

Задайте SaveMemory как 'on' когда матрица входа содержит тысячи предикторов.

Пример: 'SaveMemory','on'

Преобразование счета, заданное как вектор символов, строковый скаляр или указатель на функцию.

В этой таблице результирующие векторы символов и строковые скаляры.

ЗначениеОписание
'doublelogit'1/(1 + e–2x)
'invlogit'журнал (x/( 1 - x))
'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
'logit'1/(1 + ex)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2 x – 1
'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
'symmetriclogit'2/(1 + ex) – 1

Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).

Пример: 'ScoreTransform','logit'

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

Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из '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

Опции перекрестной валидации

свернуть все

Флаг перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Crossval' и 'on' или 'off'.

Если вы задаете 'on'затем программное обеспечение реализует 10-кратную перекрестную валидацию.

Чтобы переопределить этот параметр перекрестной проверки, используйте один из следующих аргументов пары "имя-значение": CVPartition, Holdout, KFold, или Leaveout. Чтобы создать перекрестно проверенную модель, можно использовать один аргумент пары "имя-значение" перекрестной валидации только за раз.

Другой способ - выполнить перекрестную проверку позже путем передачи Mdl на crossval.

Пример: 'CrossVal','on'

Раздел перекрестной проверки, заданный как cvpartition объект раздела, созданный cvpartition. Объект раздела задает тип перекрестной валидации и индексацию для наборов обучения и валидации.

Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.

Пример: Предположим, что вы создаете случайный разбиение для 5-кратной перекрестной валидации при 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестно проверенную модель при помощи 'CVPartition',cvp.

Доля данных, используемых для валидации удержания, заданная в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает следующие шаги:

  1. Случайный выбор и резервирование p*100% данных в качестве данных валидации и train модели с использованием остальных данных.

  2. Сохраните компактную, обученную модель в Trained свойство перекрестно проверенной модели.

Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Holdout',0.1

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

Количество складок для использования в перекрестно проверенной модели, заданное как положительное целое значение, больше 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает следующие шаги:

  1. Случайным образом разделите данные на k наборы.

  2. Для каждого набора зарезервируйте набор как данные валидации и обучите модель, используя другой k - 1 комплект.

  3. Сохраните k компактные, обученные модели в k-by-1 вектор камеры в Trained свойство перекрестно проверенной модели.

Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'KFold',5

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

Выходной флаг перекрестной проверки, заданный как 'on' или 'off'. Если вы задаете 'Leaveout','on', затем для каждого из n наблюдений (где n - количество наблюдений, исключая недостающие наблюдения, заданное в NumObservations свойство модели), программное обеспечение завершает следующие шаги:

  1. Зарезервируйте одно наблюдение как данные валидации и обучите модель с помощью другого n - 1 наблюдений.

  2. Сохраните n компактные обученные модели в векторе камеры n-на-1 в Trained свойство перекрестно проверенной модели.

Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.

Пример: 'Leaveout','on'

Опции оптимизации гипероптимизации параметров управления

свернуть все

Оптимизируемые параметры, заданные как разделенная разделенными запятой парами, состоящая из 'OptimizeHyperparameters' и одно из следующих:

  • 'none' - Не оптимизировать.

  • 'auto' - Использовать {'Delta','Gamma'}.

  • 'all' - Оптимизируйте все подходящие параметры.

  • Строковые массивы или массив ячеек с допустимыми именами параметров.

  • Вектор optimizableVariable объекты, как правило, выходные данные hyperparameters.

Оптимизация пытается минимизировать потери перекрестной валидации (ошибка) для fitcdiscr путем изменения параметров. Для получения информации о потерях при перекрестной проверке (хотя и в другом контексте), смотрите Классификационные потери. Чтобы контролировать тип перекрестной валидации и другие аспекты оптимизации, используйте HyperparameterOptimizationOptions Пара "имя-значение".

Примечание

'OptimizeHyperparameters' значения переопределяют все значения, которые вы устанавливаете, используя другие аргументы пары "имя-значение". Для примера установка 'OptimizeHyperparameters' на 'auto' вызывает 'auto' значения для применения.

Подходящие параметры для fitcdiscr являются:

  • Deltafitcdiscr поиск среди положительных значений, по умолчанию логарифмический в области значений [1e-6,1e3].

  • DiscrimTypefitcdiscr поиск среди 'linear', 'quadratic', 'diagLinear', 'diagQuadratic', 'pseudoLinear', и 'pseudoQuadratic'.

  • Gammafitcdiscr ищет среди вещественных значений в области значений [0,1].

Установите параметры nondefault путем передачи вектора optimizableVariable объекты, которые имеют значения nondefault. Для примера,

load fisheriris
params = hyperparameters('fitcdiscr',meas,species);
params(1).Range = [1e-4,1e6];

Передайте params как значение OptimizeHyperparameters.

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является журнал ( 1 + потери перекрестной валидации) для регрессии и коэффициент неправильной классификации для классификации. Чтобы управлять итеративным отображением, установите Verbose поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение". Чтобы управлять графиками, установите ShowPlots поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение".

Для получения примера смотрите Оптимизацию Дискриминантной Модели Анализа.

Пример: 'auto'

Опции оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'HyperparameterOptimizationOptions' и структуру. Этот аргумент изменяет эффект OptimizeHyperparameters аргумент пары "имя-значение". Все поля в структуре являются необязательными.

Имя поляЗначенияДефолт
Optimizer
  • 'bayesopt' - Используйте байесовскую оптимизацию. Внутренне эта настройка вызывает bayesopt.

  • 'gridsearch' - Используйте поиск по сетке с NumGridDivisions значений на размерность.

  • 'randomsearch' - Поиск наугад среди MaxObjectiveEvaluations точки.

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

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Функции сбора данных, имена которых включают per-second не дают воспроизводимых результатов, потому что оптимизация зависит от времени выполнения целевой функции. Функции сбора данных, имена которых включают plus изменять свое поведение при чрезмерной эксплуатации области. Для получения дополнительной информации см. Типы функций приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество вычислений целевой функции.30 для 'bayesopt' или 'randomsearch', и вся сетка для 'gridsearch'
MaxTime

Временной предел, заданный как положительный действительный. Предел времени в секундах, что измеряется tic и toc. Время выполнения может превысить MaxTime потому что MaxTime не прерывает вычисления функции.

Inf
NumGridDivisionsДля 'gridsearch', количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности, или скаляром, который применяется ко всем размерностям. Это поле игнорируется для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показывать ли графики. Если true, это поле строит график наилучшего значения целевой функции относительно числа итерации. Если существует один или два параметра оптимизации и если Optimizer является 'bayesopt', затем ShowPlots также строит график модели целевой функции относительно параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранять ли результаты при Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области с именем 'BayesoptResults' при каждой итерации. Переменная является BayesianOptimization объект.false
Verbose

Отображение в командной строке.

  • 0 - Нет итерационного отображения

  • 1 - Итеративное отображение

  • 2 - Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите bayesopt Verbose аргумент пары "имя-значение".

1
UseParallelЛогическое значение, указывающее, запускать ли байесовскую оптимизацию параллельно, что требует Parallel Computing Toolbox™. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно приводит к воспроизводимым результатам. Для получения дополнительной информации см. «Параллельная байесовская оптимизация».false
Repartition

Логическое значение, указывающее, следует ли повторять перекрестную валидацию при каждой итерации. Если falseОптимизатор использует один раздел для оптимизации.

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

false
Используйте не более одного из следующих трех имен полей.
CVPartitionA cvpartition объект, созданный cvpartition.'Kfold',5 если вы не задаете какое-либо поле перекрестной проверки
HoldoutСкаляр в области значений (0,1) представляющий фракцию удержания.
KfoldЦелое число, больше 1.

Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

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

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

свернуть все

Обученная модель классификации дискриминантного анализа, возвращенная как ClassificationDiscriminant объект модели или ClassificationPartitionedModel перекрестно проверенный объект модели.

Если вы задаете любой из аргументов пары "имя-значение" KFold, Holdout, CrossVal, или CVPartition, затем Mdl является ClassificationPartitionedModel перекрестно проверенный объект модели. В противном случае Mdl является ClassificationDiscriminant объект модели.

Ссылка на свойства Mdl, используйте запись через точку. Для примера, чтобы отобразить предполагаемые средства компонента в Командном окне, введите Mdl.Mu.

Подробнее о

свернуть все

Классификация дискриминантов

Модель для дискриминантного анализа:

  • Каждый класс (Y) генерирует данные (X) с использованием многомерного нормального распределения. То есть модель принимает X имеет Гауссово-смешанное распределение (gmdistribution).

    • Для линейного дискриминантного анализа модель имеет ту же ковариационную матрицу для каждого класса, варьируются только средства.

    • Для квадратичного дискриминантного анализа как средства, так и ковариации каждого класса варьируются.

predict классифицирует так, чтобы минимизировать ожидаемые классификационные затраты:

y^=argminy=1,...,Kk=1KP^(k|x)C(y|k),

где

  • y^ - предсказанная классификация.

  • K - количество классов.

  • P^(k|x) - апостериорная вероятность k классов для x наблюдений.

  • C(y|k) - стоимость классификации наблюдения как y, когда его истинный класс k.

Для получения дополнительной информации смотрите Предсказание с использованием дискриминантных моделей анализа.

Совет

После обучения модели можно сгенерировать код C/C + +, который предсказывает метки для новых данных. Для генерации кода C/C + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода .

Альтернативная функциональность

Функции

classify функция также выполняет дискриминантный анализ. classify обычно более неловко использовать.

  • classify требует, чтобы вы подгоняли классификатор каждый раз, когда вы делаете новое предсказание.

  • classify не выполняет перекрестную валидацию или оптимизацию гипероптимизации параметров управления.

  • classify требует, чтобы вы подгоняли классификатор при изменении предыдущих вероятностей.

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

Введенный в R2014a
Для просмотра документации необходимо авторизоваться на сайте