fitcdiscr

拟合判别分析分类器

描述

Mdl= fitcdiscr (资源描述ResponseVarName根据表中包含的输入变量(也称为预测器、特征或属性)返回一个拟合的判别分析模型资源描述而输出(响应或标签)包含在ResponseVarName

Mdl= fitcdiscr (资源描述公式根据表中包含的输入变量返回一个拟合的判别分析模型资源描述公式是否有响应的解释模型和预测变量的子集资源描述适合使用Mdl

Mdl= fitcdiscr (资源描述Y根据表中包含的输入变量返回一个拟合的判别分析模型资源描述和响应Y

例子

Mdl= fitcdiscr (XY根据输入变量返回判别分析分类器X和响应Y

例子

Mdl= fitcdiscr (___名称,值使用任何前面的语法,用一个或多个名称-值对参数指定的附加选项适合分类器。例如,您可以优化超参数以最小化模型的交叉验证损失,或者指定错误分类的代价、每个类的先验概率或观察权重。

例子

全部折叠

载入费雪的虹膜数据集。

负载fisheriris

利用整个数据集训练一个判别分析模型。

Mdl = fitcdiscr(量、物种)
Mdl = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 discritype: 'linear' Mu: [3x4 double] Coeffs: [3x3 struct]属性,方法

Mdl是一个ClassificationDiscriminant模型。要访问其属性,请使用点表示法。例如,显示每个预测器的组均值。

Mdl。μ
ans =3×45.0060 3.4280 1.4620 0.2460 5.9360 2.7700 4.2600 1.3260 6.5880 2.9740 5.5520 2.0260

为了预测新的观察结果的标签,通过Mdl和预测数据预测

此示例演示如何使用自动优化超参数fitcdiscr.这个例子使用了Fisher的虹膜数据。

加载数据。

负载fisheriris

通过使用自动超参数优化找到最小化五倍交叉验证损失的超参数。

为了再现性,设置随机种子并使用“expected-improvement-plus”采集功能。

rng(1) Mdl = fitcdiscr(meas,species,“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”...结构(“AcquisitionFunctionName”“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFarδ|γ| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.66667 | 1.0907 | 0.66667 | 0.66667 | 13.261 | 0.25218 |
| 0.02 | 0.099698 | 0.02 | 0.064227 | 2.7404e-05 | 0.073264 |
| 3 |接受| 0.04 | 0.1121 | 0.02 | 0.020084 | 3.2455e-06 | 0.46974 |
| 4 |接受| 0.66667 | 0.081014 | 0.02 | 0.020118 | 14.879 | 0.98622 |
| 5 |接受| 0.046667 | 0.12032 | 0.02 | 0.019907 | 0.00031449 | 0.97362 |
| 6 |接受| 0.04 | 0.074027 | 0.02 | 0.028438 | 4.5092e-05 | 0.43616 |
| 7 |接受| 0.046667 | 0.066533 | 0.02 | 0.031424 | 2.0973e-05 | 0.9942 |
| 8 | 0.02 | 0.067014 | 0.02 | 0.022424 | 1.0554e-06 | 0.0024286 |
| 9 |接受| 0.02 | 0.067049 | 0.02 | 0.021105 | 1.1232e-06 | 0.00014039 |
| 0.02 | 0.06981 | 0.02 | 0.020948 | 0.00011837 | 0.0032994 |
| 11 |接受| 0.02 | 0.068447 | 0.02 | 0.020172 | 1.0292e-06 | 0.027725 |
| 12 |接受| 0.02 | 0.067554 | 0.02 | 0.020105 | 9.7792 -05 | 0.0022817 |
| 13 | 0.02 | 0.070962 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 |
| 14 |接受| 0.02 | 0.065973 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 |
| 15 |接受| 0.02 | 0.066822 | 0.02 | 0.019461 | 1.1911e-05 | 0.0010135 |
| 16 | 0.02 | 0.072618 | 0.02 | 0.01993 | 0.0017896 | 0.00071115 |
| 17 |接受| 0.02 | 0.069112 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 |
| 18 |接受| 0.02 | 0.068305 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 |
| 19 |接受| 0.02 | 0.067392 | 0.02 | 0.019678 | 0.007292 | 0.0007911 |
| 20 |接受| 0.046667 | 0.078876 | 0.02 | 0.019785 | 0.0074408 | 0.99945 |
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFarδ|γ| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 21日|接受| 0.02 | 0.067218 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 |
| 22 | 0.02 | 0.079969 | 0.02 | 0.019755 | 2.5238e-05 | 0.0015542 |
| 23 |接受| 0.02 | 0.070177 | 0.02 | 0.0191 | 1.5478e-05 | 0.0026899 |
| 24 | 0.02 | 0.064725 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 |
| 25 |接受| 0.02 | 0.065815 | 0.02 | 0.019333 | 2.959e-05 | 0.0011358 |
| 26 | 0.02 | 0.066704 | 0.02 | 0.019369 | 2.3111e-06 | 0.0029205 |
| 27 |接受| 0.02 | 0.065487 | 0.02 | 0.019455 | 3.8898e-05 | 0.0011665 |
| 28 |接受| 0.02 | 0.063646 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 |
| 29 |接受| 0.66667 | 0.070781 | 0.02 | 0.019479 | 998.93 | 0.064276 |
| 30 | 0.02 | 0.067911 | 0.02 | 0.01947 | 8.1557e-06 | 0.0008004 |

__________________________________________________________ 优化完成。最大目标:达到30。总运行时间:23.9743秒。最佳可行观测点:Delta Gamma __________ ________ 2.7404e-05 0.073264观测到的目标函数值= 0.02估计的目标函数值= 0.022693函数评估时间= 0.099698最佳估计可行点(根据模型):Delta Gamma __________ _________ 2.5238e-05 0.0015542估计的目标函数值= 0.01947估计的函数评估时间= 0.068908
Mdl = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1×1 BayesianOptimization] discritype: 'linear' Mu: [3×4 double] Coeffs: [3×3 struct]属性,方法

在默认的5倍交叉验证中,拟合达到约2%的损失。

这个例子展示了如何使用高数组自动优化判别分析模型的超参数。示例数据集airlinesmall.csv是一个大型数据集,其中包含航空公司航班数据的表格文件。这个示例创建一个包含数据的高表,并使用它运行优化过程。

当您在高数组上执行计算时,MATLAB®使用并行池(如果您有并行计算工具箱™则默认)或本地MATLAB会话。如果在拥有并行计算工具箱的情况下,希望使用本地MATLAB会话运行示例,则可以通过使用mapreduce函数。

创建一个使用数据引用文件夹位置的数据存储。选择要处理的变量的一个子集,并进行处理“NA”值作为缺失的数据,因此数据存储取代他们值。创建一个包含数据存储中的数据的高表。

ds =数据存储(“airlinesmall.csv”);ds。年代electedVariableNames = {“月”“DayofMonth”“DayOfWeek”...“DepTime”“ArrDelay”“距离”“DepDelay”};ds。TreatAsMissing =“NA”;tt =高(ds)%高表
使用“本地”配置文件启动并行池(parpool)…连接到平行池(工人数量:6)。tt = M×7高表月DayofMonth DayOfWeek DepTime DepDelay ArrDelay距离  _____ __________ _________ _______ ________ ________ ________ 10 21 642 8 308年12 26 10 23 5 1 1021 8 296 2055 21 480 1332 10 23 5 13 296 12 10 22 4 629 373 1 10 28 3 1446 59 308 63 10 8 4 928 447 2 10 10 6 859 11 954 1  : : : : : : : : : : : : : :

通过定义一个逻辑变量来确定延误10分钟或更长时间的航班。这个变量包含类标签。该变量的预览包括前几行。

Y = tt。DepDelay > 10%的类标签
Y = M×1高逻辑阵列1 0 1 1 0 1 0 0 0::

为预测器数据创建一个高数组。

X = tt {: 1: end-1}%的预测数据
X = M×6高双矩阵1021 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]);删除缺失条目的数据X = R (:, 1: end-1);Y = R(:,结束);

标准化预测变量。

Z = zscore (X);

方法自动优化超参数“OptimizeHyperparameters”名称-值对的论点。找到最优“DiscrimType”最小抵制交叉验证损失的值。(指定“汽车”使用“DiscrimType”)。对于可再现性,使用“expected-improvement-plus”采集函数和设置种子的随机数生成器使用rng而且tallrng.根据工作人员的数量和tall数组的执行环境,结果可能有所不同。有关详细信息,请参见控制代码运行的位置(MATLAB)。

rng (“默认”) tallrng (“默认”[Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(Z,Y,...“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”结构(“坚持”, 0.3,...“AcquisitionFunctionName”“expected-improvement-plus”))
使用Parallel Pool 'local'计算高表达式:—通过2中的1:0%完成计算0%完成
-通过1 / 2:在6.5秒内完成-通过2 / 2:在4.8秒内完成评估在19秒内完成使用并行池“local”计算高表达式:在2.6秒完成评估在2.9秒完成  |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 最好1 | | 0.11354 | 29.439 | 0.11354 | 0.11354 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在1.5秒内完成评估在2.6秒内完成评估使用并行池“local”:-通过1 / 1:在0.88秒内完成评估在1秒内完成| 2 |接受| 0.11354 | 7.6757 | 0.11354 | 0.11354 | pseudoQuadra |
使用并行池'local'计算高表达式:-通过1:在0.87秒内完成评估在2秒内完成评估使用并行池'local': -通过1:在0.82秒内完成评估在0.95秒内完成| 3 |接受| 0.12869 | 6.819 | 0.11354 | 0.11859 |伪线性|
使用并行池'local'评估高表达式:-通过1:在0.82秒完成评估在1.6秒完成评估使用并行池'local': -通过1:在0.77秒完成评估在0.9秒完成| 4 |接受| 0.12745 | 6.1437 | 0.11354 | 0.1208 | diagLinear |
使用并行池“local”评估高表达式:-通过1 / 1:在0.82秒完成评估在1.6秒完成评估使用并行池“local”:-通过1 / 1:在0.76秒完成评估在0.88秒完成| 5 |接受| 0.12869 | 6.2058 | 0.11354 | 0.12238 |线性|
使用并行池“local”计算高表达式:-通过1 / 1:在0.8秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.74秒内完成评估在0.87秒内完成| 6 | Best | 0.11301 | 5.6591 | 0.11301 | 0.12082 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.91秒完成评估在1.6秒完成评估使用并行池“local”:-通过1 / 1:在0.74秒完成评估在0.87秒完成| 7 |接受| 0.11301 | 5.7062 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.79秒完成评估在1.5秒完成评估使用并行池'local': -通过1 / 1:在0.75秒完成评估在0.87秒完成| 8 |接受| 0.11301 | 5.6338 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.83秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在0.75秒内完成评估在0.87秒内完成| 9 |接受| 0.11301 | 5.6792 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估高表达式:-通过1 / 1:在0.83秒完成评估在1.6秒完成使用并行池“local”评估高表达式:-通过1 / 1:在0.74秒完成评估在0.85秒完成| 10 |接受| 0.11301 | 5.6936 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.78秒内完成评估在0.91秒内完成| 11 |接受| 0.11301 | 5.7416 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估高表达式:-通过1 / 1:在0.83秒完成评估在1.6秒完成使用并行池“local”评估高表达式:-通过1 / 1:在0.76秒完成评估在0.88秒完成| 12 |接受| 0.11301 | 5.8429 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.74秒内完成评估在0.86秒内完成| 13 |接受| 0.11301 | 5.6494 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.77秒内完成评估在0.9秒内完成| 14 |接受| 0.11301 | 5.6808 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.89秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.72秒内完成评估在0.84秒内完成| 15 |接受| 0.11354 | 5.6261 | 0.11301 | 0.11301 | pseudoQuadra |
使用并行池“local”计算高表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.75秒内完成评估在0.87秒内完成| 16 |接受| 0.11301 | 5.5662 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.87秒内完成| 17 |接受| 0.11301 | 5.5904 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.89秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 18 |接受| 0.11301 | 6.2936 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.81秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.76秒内完成评估在0.88秒内完成| 19 |接受| 0.11301 | 5.6236 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.8秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.85秒内完成评估在0.97秒内完成| 20 |接受| 0.11301 | 5.6608 | 0.11301 | 0.11301 | diagQuadrati |
通过1 / 1:在0.81秒内完成,在1.5秒内完成,使用并行池“local”计算高表达式:-通过1 / 1:在0.75秒完成评估在0.87秒完成  |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 21日|接受| 0.11301 | 5.5474 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.79秒内完成评估在1.4秒内完成评估使用并行池“local”:-通过1 / 1:在0.73秒内完成评估在0.86秒内完成| 22 |接受| 0.11354 | 5.5354 | 0.11301 | 0.11301 |二次|
使用并行池'local'计算高表达式:-通过1 / 1:在0.8秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.74秒内完成评估在0.86秒内完成| 23 |接受| 0.11354 | 5.5548 | 0.11301 | 0.11301 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在0.8秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.82秒内完成评估在0.94秒内完成| 24 |接受| 0.11301 | 5.6123 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.83秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.73秒内完成评估在0.85秒内完成| 25 |接受| 0.11301 | 5.5319 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.78秒内完成评估在1.5秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.86秒内完成| 26 |接受| 0.11301 | 5.5199 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.83秒内完成评估在1.6秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.86秒内完成| 27 |接受| 0.12869 | 5.9427 | 0.11301 | 0.11301 |伪线性|
使用并行池'local'计算高表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.74秒内完成评估在0.88秒内完成| 28 |接受| 0.11301 | 5.6447 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.74秒内完成评估在0.87秒内完成| 29 |接受| 0.11354 | 5.5633 | 0.11301 | 0.11301 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在0.89秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在0.74秒内完成评估在0.86秒内完成| 30 |接受| 0.11301 | 5.6907 | 0.11301 | 0.11301 | diagQuadrati |

__________________________________________________________ 优化完成。最大目标:达到30。总运行时间:238.5681秒。最佳可行点(根据模型):DiscrimType _____________ diag平方估计的目标函数值= 0.11301估计的目标函数值= 0.11301估计的函数评估时间= 5.6591估计的目标函数值= 0.11301估计的函数评估时间= 5.8946使用并行池'local'评估高表达式:1 / 1: 0.69秒完成评估1.4秒完成
Mdl = classreg.learning.classif.CompactClassificationDiscriminant PredictorNames: {'x1' 'x2' 'x3' 'x4' 'x5' 'x6'} ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [0 1] ScoreTransform: 'none' discritype: ' diagsquared ' Mu: [2×6 double] Coeffs: [2×2 struct]属性,方法
FitInfo =不带字段的结构。
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/tallObjFcn variabledescription: [1×1 optimizableVariable] Options: [1×1 struct] MinObjective: 0.1130 XAtMinObjective: [1×1 table] minestimatedobjobjective: [1×1 table] numobjectiveevaluts30 TotalElapsedTime: 238.5681 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]可行性跟踪:[30×1 logical]可行性概率跟踪:[30×1 double] IndexOfMinimumTrace: [30×1 double] objectivminimumtrace: [30×1 double] estimatedobjectivminimumtrace: [30×1 double]

输入参数

全部折叠

用于训练模型的样例数据,指定为表。每一行的资源描述对应一个观察结果,每一列对应一个预测变量。可选地,资源描述可以为响应变量包含一个附加列。不允许多列变量和字符向量的单元格数组以外的单元格数组。

如果资源描述包含响应变量,并且希望在中使用所有剩余变量资源描述作为预测器,然后通过使用指定响应变量ResponseVarName

如果资源描述包含响应变量,并且您希望仅使用其余变量的子集资源描述作为预测器,然后用指定公式公式

如果资源描述不包含响应变量,则使用Y.中的响应变量的长度和行数资源描述必须是相等的。

数据类型:表格

中指定为变量名的响应变量名资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果响应变量Y存储为资源描述。Y,然后将其指定为“Y”.的所有列资源描述,包括Y,作为训练模型时的预测因子。

响应变量必须是类别、字符或字符串数组、逻辑或数字向量,或者字符向量的单元格数组。如果Y是字符数组,则响应变量的每个元素必须对应于数组的一行。

类指定类的顺序是一个好的实践一会名称-值对的论点。

数据类型:字符|字符串

响应变量和预测变量子集的解释模型,在形式中指定为字符向量或字符串标量“Y ~ X1 + X2 + X3”.在这种形式,Y表示响应变量,和X1X2,X3表示预测变量。

中指定变量的子集资源描述使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件将不使用任何变量资源描述没有出现在公式

公式中的变量名必须是资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。

中的变量名可以进行验证资源描述通过使用isvarname函数。以下代码返回合乎逻辑的结果1真正的)用于每个具有有效变量名的变量。

cellfun (@isvarname Tbl.Properties.VariableNames)
如果变量名在资源描述是无效的,那么使用matlab.lang.makeValidName函数。
Tbl.Properties.VariableNames = matlab.lang.makeValidName (Tbl.Properties.VariableNames);

数据类型:字符|字符串

类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。每一行的Y的对应行的分类X

软件认为(空字符向量),""(空字符串),< >失踪,<定义>Y丢失的值因此,该软件不能使用缺少响应的观察结果进行训练。

数据类型:分类|字符|字符串|逻辑|||细胞

预测器值,指定为数值矩阵。每一列的X表示一个变量,每一行表示一个观察结果。

fitcdiscr认为X作为缺失值。fitcdiscr不使用缺失值的观察X的健康。

数据类型:|

名称-值对的观点

指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“DiscrimType”、“二次”,“SaveMemory”,“上”指定二次判别分类器,并且不将协方差矩阵存储在输出对象中。

请注意

方法不能使用任何交叉验证名值对参数“OptimizeHyperparameters”名称-值对的论点。的交叉验证“OptimizeHyperparameters”只有使用“HyperparameterOptimizationOptions”名称-值对的论点。

模型参数

全部折叠

用于训练的类名,指定为逗号分隔的对,由“类名”和类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。一会必须具有与?相同的数据类型Y

如果一会是字符数组,则每个元素必须对应于数组的一行。

使用“类名”:

  • 在培训期间订购课程。

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用“类名”指定…尺寸的顺序成本返回的分类分数的列顺序预测

  • 选择培训类的一个子集。例如,假设所有不同的类名的集合Y{' a ', ' b ', ' c '}.使用类的观察来训练模型“一个”而且“c”只是,指定“类名”,{' a ', ' c '}

的默认值。一会所有不同的类名的集合是否在Y

例子:“类名”,{' b ', ' g '}

数据类型:分类|字符|字符串|逻辑|||细胞

点分类错误的代价,指定为逗号分隔的对,由“成本”和以下其中之一:

  • 方阵,成本(i, j)将一个点分类到类的成本是多少j如果它真正的阶级是(即,行对应真正的类,列对应预测的类)。的相应行和列的类顺序成本,另外指定一会名称-值对的论点。

  • 结构年代有两个领域:S.ClassNames作为类型相同的变量包含组名Y,S.ClassificationCosts包含成本矩阵。

默认值是成本(i, j) = 1如果我~ = j,成本(i, j) = 0如果我=我

数据类型:||结构体

线性系数阈值,指定为逗号分隔对,由“δ”和一个非负标量值。如果系数为Mdl大小小于δMdl将该系数设置为0,可以从模型中剔除相应的预测因子。集δ到更高的值以消除更多的预测因子。

δ必须0对于二次判别模型。

数据类型:|

鉴别类型,指定为逗号分隔的对,由“DiscrimType”和此表中的字符向量或字符串标量。

价值 描述 预测协方差治疗
“线性” 正则化线性判别分析(LDA)
  • 所有的类都有相同的协方差矩阵。

  • Σ γ 1 γ Σ + γ 诊断接头 Σ

    Σ 经验的,合并的协方差矩阵和γ就是正则化的量。

“diaglinear” 乔治。 所有类都有相同的对角协方差矩阵。
“pseudolinear” 乔治。 所有的类都有相同的协方差矩阵。该软件利用伪逆求协方差矩阵。
“二次” 二次判别分析(QDA) 协方差矩阵可以在不同的类之间变化。
“diagquadratic” QDA 协方差矩阵是对角线的,可以在类之间变化。
“pseudoquadratic” QDA 协方差矩阵可以在不同的类之间变化。该软件利用伪逆求协方差矩阵。

请注意

要使用正则化,必须指定“线性”.要指定正则化的数量,请使用γ名称-值对的论点。

例子:“DiscrimType”、“二次”

多项式系数属性标志,指定为逗号分隔的一对,由“FillCoeffs”而且“上”“关闭”.将标志设置为“上”填充多项式系数属性中的。这可能需要大量的计算,特别是在交叉验证时。默认值是“上”,除非指定交叉验证名值对,在这种情况下,标志设置为“关闭”默认情况下。

例子:“FillCoeffs”,“关闭”

在估计预测器的协方差矩阵时应用的正则化量,指定为逗号分隔的对,由“伽马”和区间[0,1]中的一个标量值。γ对协方差矩阵结构提供更好的控制DiscrimType

  • 如果您指定0,则软件不使用正则化来调整协方差矩阵。也就是说,该软件估计并使用不受限制的经验协方差矩阵。

    • 对于线性判别分析,如果经验协方差矩阵是奇异的,那么软件自动应用所需的最小正则化反求协方差矩阵。您可以通过输入来显示所选的正则化量Mdl。γ在命令行。

    • 对于二次判别分析,如果至少有一个类的经验协方差矩阵是奇异的,那么软件就会抛出一个错误。

  • 如果指定了区间(0,1)中的值,则必须实现线性判别分析,否则软件将抛出错误。因此,软件设置DiscrimType“线性”

  • 如果您指定1,则软件采用最大正则化进行协方差矩阵估计。也就是说,软件将协方差矩阵限制为对角线。您也可以设置DiscrimType“diagLinear”“diagQuadratic”对角协方差矩阵。

例子:“伽马”,1

数据类型:|

预测器变量名,指定为逗号分隔的一对,由“PredictorNames”和唯一名称的字符串数组或唯一字符向量的单元格数组。的功能“PredictorNames”这取决于你提供训练数据的方式。

  • 如果你提供X而且Y,然后你可以使用“PredictorNames”给出预测变量X的名字。

    • 名字的顺序PredictorNames的列顺序必须对应X.也就是说,PredictorNames {1}X (: 1)PredictorNames {2}X (:, 2),等等。同时,大小(X, 2)而且元素个数(PredictorNames)必须是相等的。

    • 默认情况下,PredictorNames{x1, x2,…}

  • 如果你提供资源描述,然后你可以使用“PredictorNames”选择在训练中使用的预测变量。也就是说,fitcdiscr中的预测变量PredictorNames训练中的响应变量。

    • PredictorNames的子集Tbl.Properties.VariableNames和不能包含响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名称。

    • 一个好的实践是使用任意一种方法指定训练的预测器“PredictorNames”公式只有。

例子:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

数据类型:字符串|细胞

每个类的先验概率,指定为逗号分隔的对,由“之前”和这个表中的一个值。

价值 描述
“经验” 类的先验概率是类的相对频率Y
“统一” 所有类的先验概率都等于1/K,在那里K是类的数量。
数值向量 每个元素都是一个类先验概率。对元素进行排序Mdl.ClassNames方法指定顺序一会名称-值对的论点。该软件将元素规范化,使它们的和为1
结构

一个结构年代两个字段:

  • S.ClassNames作为类型相同的变量包含类名Y

  • S.ClassProbs包含相应先验概率的向量。该软件将元素规范化,使它们的和为1

如果为两者设置值权重而且之前,将权重重新规格化,使其相加等于各自类中的先验概率值。

例子:“前”、“制服”

数据类型:字符|字符串|||结构体

响应变量名,指定为逗号分隔的对“ResponseName”和字符向量或字符串标量。

  • 如果你提供Y,然后你可以使用“ResponseName”为响应变量指定名称。

  • 如果你提供ResponseVarName公式,那么你就不能使用“ResponseName”

例子:“ResponseName”、“响应”

数据类型:字符|字符串

标记以保存协方差矩阵,指定为逗号分隔的对,由“SaveMemory”,要么“上”“关闭”.如果您指定“上”,然后fitcdiscr不存储完整的协方差矩阵,而是存储足够的信息来计算矩阵。的预测方法计算完整的协方差矩阵用于预测,并且不存储矩阵。如果您指定“关闭”,然后fitcdiscr计算并存储完整的协方差矩阵Mdl

指定SaveMemory作为“上”当输入矩阵包含数千个预测因子时。

例子:“SaveMemory”,“上”

分数转换,指定为逗号分隔的对组成“ScoreTransform”和字符向量、字符串标量或函数句柄。

这个表总结了可用的字符向量和字符串标量。

价值 描述
“doublelogit” 1 / (1 +e2x
“invlogit” 日志(x/ (1 -x))
“ismax” 将分数最大的类的分数设置为1,并将所有其他类的分数设置为0
分对数的 1 / (1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 将分数最大的类的分数设置为1,并将所有其他类的分数设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于MATLAB函数或您定义的函数,使用它的函数句柄进行分数变换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

例子:“ScoreTransform”、“分对数的

数据类型:字符|字符串|function_handle

观察权值,用逗号分隔的对表示“重量”和正数值向量或变量名资源描述.软件对每一行的观察结果进行加权X资源描述的对应值权重.的大小权重必须等于的行数X资源描述

如果将输入数据指定为表资源描述,然后权重变量的名称可以在资源描述它包含一个数字向量。在这种情况下,您必须指定权重作为字符向量或字符串标量。例如,如果权重向量W存储为资源描述。W,然后将其指定为' W '.的所有列资源描述,包括W,作为训练模型时的预测器或响应。

该软件可实现权重加起来等于各自类的先验概率的值。

默认情况下,权重(n, 1),在那里n观察的数量在吗X资源描述

数据类型:||字符|字符串

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔的对,由“Crossval”而且“上”“关闭”

如果您指定“上”,然后该软件实现10次交叉验证。

要覆盖此交叉验证设置,请使用以下名称-值对参数之一:CVPartition坚持KFold,或Leaveout.要创建交叉验证模型,一次只能使用一个交叉验证名称-值对参数。

或者,稍后通过传递交叉验证Mdlcrossval

例子:“CrossVal”,“上”

交叉验证分区,指定为逗号分隔的对,由“CVPartition”和一个cvpartition创建的分区对象cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建交叉验证的模型,你只能使用以下四个名称-值对参数中的一个:CVPartition坚持KFold,或Leaveout

例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证本量利= cvpartition(500年,“KFold”,5).然后,您可以使用指定交叉验证的模型“CVPartition”,本量利

用于抵制验证的数据的一部分,指定为逗号分隔的对,由“坚持”和(0,1)范围内的标量值。如果您指定‘坚持’,p,然后软件完成以下步骤:

  1. 随机选择和保留p * 100%的数据作为验证数据,并使用其余的数据训练模型。

  2. 存储紧凑的,训练过的模型训练有素的属性的交叉验证模型。

要创建交叉验证的模型,你只能使用以下四个名称-值对参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“坚持”,0.1

数据类型:|

交叉验证模型中使用的折叠数,指定为逗号分隔的对,由“KFold”和一个大于1的正整数。如果您指定KFold, k,然后软件完成以下步骤:

  1. 将数据随机划分为k集。

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k- 1集。

  3. 存储k训练有素的小型模型k中的-by-1单元格向量训练有素的属性的交叉验证模型。

要创建交叉验证的模型,你只能使用以下四个名称-值对参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“KFold”,5

数据类型:|

省略一个交叉验证标志,指定为逗号分隔的对,由“Leaveout”而且“上”“关闭”.如果您指定“Leaveout”,“上”,那么,对于每一个n观察(n不包括遗漏观测的观测数是否在NumObservations属性),软件完成以下步骤:

  1. 保留观测数据作为验证数据,并使用其他数据训练模型n- 1的观察。

  2. 存储n紧凑,训练有素的模型在牢房里n中的-by-1单元格向量训练有素的属性的交叉验证模型。

要创建交叉验证的模型,你只能使用以下四个名称-值对参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“Leaveout”,“上”

Hyperparameter优化选项

全部折叠

参数要优化,指定为逗号分隔的对,由“OptimizeHyperparameters”和以下其中之一:

  • “没有”-不要优化。

  • “汽车”——使用{“三角洲”,“伽马”}

  • “所有”—优化所有符合条件的参数。

  • 合格参数名称的字符串数组或单元格数组。

  • 向量的optimizableVariable的输出hyperparameters

优化尝试最小化交叉验证的损失(错误)fitcdiscr通过改变参数。有关交叉验证丢失的信息(尽管是在不同的上下文中),请参见分类损失.要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions名称-值对。

请注意

“OptimizeHyperparameters”值覆盖使用其他名称-值对参数设置的任何值。例如,设置“OptimizeHyperparameters”“汽车”导致“汽车”值应用。

符合条件的参数fitcdiscr是:

  • δ- - - - - -fitcdiscr在正数值之间搜索,默认情况下按对数缩放范围(1 e-6, 1 e3)

  • DiscrimType- - - - - -fitcdiscr搜索中“线性”“二次”“diagLinear”“diagQuadratic”“pseudoLinear”,“pseudoQuadratic”

  • γ- - - - - -fitcdiscr在范围内的实值之间进行搜索[0, 1]

通过传递vector来设置非默认参数optimizableVariable具有非默认值的对象。例如,

负载fisheririsparams = hyperparameters (“fitcdiscr”量,物种);参数(1)。范围=(1的军医,1 e6);

通过参数个数的价值OptimizeHyperparameters

默认情况下,迭代显示出现在命令行中,并根据优化中的超参数的数量显示图形。对于优化和绘图,目标函数为Log(1 +交叉验证损失)回归和分类的误分类率。要控制迭代显示,请设置详细的场的“HyperparameterOptimizationOptions”名称-值对的论点。要控制情节,设置ShowPlots场的“HyperparameterOptimizationOptions”名称-值对的论点。

示例请参见优化判别分析模型

例子:“汽车”

选项,指定为逗号分隔的对,由“HyperparameterOptimizationOptions”和结构。的效果OptimizeHyperparameters名称-值对的论点。结构中的所有字段都是可选的。

字段名 默认的
优化器
  • “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”

获取函数,其名称包括每秒不会产生可重复的结果,因为优化依赖于目标函数的运行时间。获取函数,其名称包括+当他们过度开发某一区域时,修改他们的行为。有关更多细节,请参见获取函数类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数评价的最大次数。 30.“bayesopt”“randomsearch”,和整个网格“gridsearch”
MaxTime

时间限制,指定为正实数。时间限制以秒为单位,用抽搐而且toc.运行时间可能超过MaxTime因为MaxTime不会中断函数的计算。

NumGridDivisions “gridsearch”,表示每个维度的值的个数。该值可以是一个给出每个维度值数量的正整数向量,也可以是一个适用于所有维度的标量。对于类别变量,该字段将被忽略。 10
ShowPlots 指示是否显示图形的逻辑值。如果真正的,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器“bayesopt”,然后ShowPlots并根据参数绘制了目标函数模型。 真正的
SaveIntermediateResults 指示何时是否保存结果的逻辑值优化器“bayesopt”.如果真正的,该字段将覆盖名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。
详细的

显示到命令行。

  • 0-无迭代显示

  • 1——迭代显示

  • 2-迭代显示额外的信息

详细信息请参见bayesopt详细的名称-值对的论点。

1
UseParallel 指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行时序的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化
重新分区

指示是否在每次迭代时重新划分交叉验证的逻辑值。如果,优化器使用单个分区进行优化。

真正的通常会给出最健壮的结果,因为该设置考虑了分区噪声。然而,为了得到好的结果,真正的需要至少两倍的函数求值。

使用以下三个字段名称中的一个。
CVPartition 一个cvpartition对象,如由cvpartition “Kfold”,5如果不指定任何交叉验证字段
坚持 范围内的标量(0,1)表示抵制分数。
Kfold 大于1的整数。

例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

数据类型:结构体

输出参数

全部折叠

训练的判别分析分类模型,返回为ClassificationDiscriminant模型对象或ClassificationPartitionedModel旨在模型对象。

如果设置任何名称-值对参数KFold坚持CrossVal,或CVPartition,然后Mdl是一个ClassificationPartitionedModel旨在模型对象。否则,Mdl是一个ClassificationDiscriminant模型对象。

的属性来引用Mdl,使用点表示法。例如,要在“命令窗口”中显示估计的组件平均值,请输入Mdl。μ

更多关于

全部折叠

判别分类

判别分析模型为:

  • 每个类(Y)生成数据(X)使用多元正态分布。也就是说,模型是这样假设的X具有高斯混合分布(gmdistribution).

    • 对于线性判别分析,每一类模型的协方差矩阵相同,只是均值不同。

    • 对于二次判别分析,每一类的均值和协方差都是不同的。

预测分类以使预期分类成本最小化:

y 参数 最小值 y 1 ... K k 1 K P k | x C y | k

在哪里

  • y 是预测的分类。

  • K是类的数量。

  • P k | x 后验概率类的k为观察x

  • C y | k 成本将观察结果分类为y当它真正的阶级是k

有关详细信息,请参见使用判别分析模型进行预测

提示

在训练一个模型之后,您可以生成预测新数据标签的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.有关详细信息,请参见代码生成简介

选择功能

功能

分类函数还执行判别分析。分类通常使用起来比较尴尬。

  • 分类要求您每次进行新预测时都要对分类器进行拟合。

  • 分类不执行交叉验证或超参数优化。

  • 分类要求您在改变先验概率时适合分类器。

扩展功能

介绍了R2014a