主要内容

fitcdiscr

拟合判别分析分类器

描述

MDL.= fitcdiscr(TBL.responsevarname.返回一个基于表中包含的输入变量(也称为预测器、特征或属性)的拟合判别分析模型TBL.和输出(响应或标签)包含在内responsevarname.

MDL.= fitcdiscr(TBL.公式基于表中包含的输入变量返回适合判别分析模型TBL.公式是响应的说明模型和预测变量的在一个子集TBL.适合使用MDL.

MDL.= fitcdiscr(TBL.y基于表中包含的输入变量返回适合判别分析模型TBL.和响应y

例子

MDL.= fitcdiscr(Xy返回基于输入变量判别分析分类X和响应y

例子

MDL.= fitcdiscr(___名称,价值适用于使用以前的任何语法中的一个或多个名称值对参数指定的附加选项的分类器。例如,您可以优化HyperParameters以最小化模型的交叉验证损失,或​​指定错误分类的成本,每个类的概率,或观察权重。

例子

全部收缩

装载Fisher的Iris数据集。

加载渔民

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

MDL = fitcdiscr(MEAS,物种)
MDL = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150 DiscrimType: '线性' 穆:[3x4的双] Coeffs:[3×3结构]属性,方法

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.并预测数据预测

此示例显示如何自动优化超级参数fitcdiscr.该示例使用Fisher的虹膜数据。

加载数据。

加载渔民

找到通过使用自动封路计优化来最小化五倍交叉验证损耗的高参数。

为了再现性,设置随机种子并使用“预期改善加成”采集功能。

rng(1) Mdl = fitcdiscr(meas,species,'OptimizeHyperparameters''汽车'...“HyperparameterOptimizationOptions”...struct('获取功能名称'“预期改善加成”)))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFarδ|γ| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 1 |最好| 0.66667 | 0.55533 | 0.66667 | 0.66667 | 13.261 | 0.25218 | | 2 |最好| 0.02 | 0.16727 | 0.02 | 0.064227 | 2.7404 e-05 | 0.073264 | | 3 |接受| 0.04 | 0.11506 | 0.02 | 0.020084 | 3.2455 e-06 | 0.46974 | | 4 |接受| 0.66667 | 0.18438 | 0.02 | 0.020118 | 14.879 | 0.98622 | | 5 |接受| 0.046667 | 0.32438 | 0.02 | 0.019907 | 0.00031449 |0.97362 | | 6 |接受| 0.04 | 0.12075 | 0.02 | 0.028438 | 4.5092 e-05 | 0.43616 | | | 7日接受| 0.046667 | 0.29976 | 0.02 | 0.031424 | 2.0973 e-05 | 0.9942 | | 8 |接受| 0.02 | 0.1413 | 0.02 | 0.022424 | 1.0554 e-06 | 0.0024286 | | | 9日接受| 0.02 | 0.093792 | 0.02 | 0.021105 | 1.1232 e-06 | 0.00014039 | | |接受10 | 0.02 | 0.11764 | 0.02 |0.020948 | 0.00011837 | 0.0032994 | | | 11日接受| 0.02 | 0.093061 | 0.02 | 0.020172 | 1.0292 e-06 | 0.027725 | | | 12日接受| 0.02 | 0.14814 | 0.02 | 0.020105 | 9.7792 e-05 | 0.0022817 | | | 13日接受| 0.02 | 0.093105 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 | | | 14日接受| 0.02 | 0.11795 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 | | 15 |接受| 0.02 | 0.12956 | 0.02 | 0.019461 | 1.1911 e-05 | 0.0010135 | | | 16日接受| 0.02 | 0.12873 | 0.02 | 0.01993 | 0.0017896 | 0.00071115 | | | 17日接受| 0.02 | 0.14435 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 | | | 18日接受| 0.02 | 0.10022 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 | | | 19日接受| 0.02 | 0.13593 | 0.02 | 0.019678 |0.007292 | 0.0007911 | | 20 |接受| 0.046667 | 0.13776 | 0.02 | 0.019785 | 0.0074408 | 0.99945  | |=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar |δ|γ| | |结果| | |运行时(观察)| (estim) | | ||=====================================================================================================| | 21日|接受| 0.02 | 0.095239 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 | | | 22日接受| 0.02 | 0.09429 | 0.02 | 0.019755 | 2.5238 e-05 | 0.0015542 | | | 23日接受| 0.02 | 0.20405 | 0.02 | 0.0191 | 1.5478 e-05 | 0.0026899 | | | 24日接受| 0.02|0.。21602 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 | | 25 | Accept | 0.02 | 0.12796 | 0.02 | 0.019333 | 2.959e-05 | 0.0011358 | | 26 | Accept | 0.02 | 0.15358 | 0.02 | 0.019369 | 2.3111e-06 | 0.0029205 | | 27 | Accept | 0.02 | 0.15441 | 0.02 | 0.019455 | 3.8898e-05 | 0.0011665 | | 28 | Accept | 0.02 | 0.12762 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 | | 29 | Accept | 0.66667 | 0.37787 | 0.02 | 0.019479 | 998.93 | 0.064276 | | 30 | Accept | 0.02 | 0.25714 | 0.02 | 0.01947 | 8.1557e-06 | 0.0008004 |

图中包含一个坐标轴。标题为“最小目标vs.函数计算数”的轴包含2个类型为line的对象。这些对象代表最小观测目标、最小估计目标。

图中包含一个坐标轴。以目标函数模型为标题的轴包含线、面、轮廓等5个对象。这些对象表示观测点,模型均值,下一个点,模型最小可行值。

__________________________________________________________ 优化完成。maxobjective达到30个。总功能评价:30总的经过时间:55.176秒总目标函数评估时间:5.1566最佳观察到的可行点:德尔塔伽玛__________ ________ 2.7404e-05 0.073264观测目标函数值= 0.02。估价目标函数值= 0.022693函数求时间= 0.16727最佳(根据型号)估计可行点:德尔塔伽玛__________ _________ 2.5238e-05 0.0015542估计目标函数值= 0.01947估计函数评估时间= 0.14522
mdl = classificationd discriminant racatectename:'y'pationoricalpricictors:[] classnames:{'setosa''versicolor''virginica'} scoreTransform:'none'numobservations:150 hyperameteroptimationresults:[1x1 bayesianoptimization] strictimype:'linear'mu:[3x4 double]COEFFS:[3x3结构]属性,方法

适用于默认的5倍交叉验证达到约2%的损失。

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

当您在高大的阵列进行计算,MATLAB®使用使用并行池(默认情况下,如果您有并行计算工具箱™)或本地MATLAB会话。如果你想使用时,你有并行计算工具箱本地MATLAB会话运行示例,您可以通过使用改变全球执行环境mapreduce函数。

创建数据存储引用的数据的文件夹位置。选择变量的一个子集一起工作,和治疗'na'值丢失的数据,以便数据存储取代他们价值观。创建一个包含数据存储中的数据的高表。

ds =数据存储(“airlinesmall.csv”);ds.selectedvariablenames = {'月'“DayofMonth”“星期几”...'deptime'“延迟”'距离''depdelay'};ds.TreatAsMissing ='na';TT =高(DS)%高表
使用“本地”配置文件启动并行池(Parpool)连接到并行池(工人数:6)。TT = M×7高大表月DAYOFMONTH DAYOFWEEK DepTime ArrDelay距离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 1022 4 629 4 373 10 -1 28 3 1446 59 308 63 10 8 4 928 3 447 10 -2 10 6 859 11 954 -1::::::::::::::

确定通过定义一个逻辑变量,一个迟到的飞行是真的迟到了10分钟以上的航班。此变量包含类的标签。这个变量的预览包括前几行。

Y = tt。DepDelay > 10%类标签
Y = M×1 tall logical array 1 0 1 1 0 1 0 0::

为预测器数据创建高阵列。

X=tt{,1:end-1}%的预测数据
X = M×6高,双矩阵10 21 3 642 8 308 10 2 23 5 2055 2 23 10 23 5 133213 23 10 23 5 13329 4 3230 23 5 1329 4 3231 10 23 3 1446 59 3030 8 4 928 3 44710 10 10 6 859 11 954 ::::::::::::::::::::::::::::::::::::::::::

删除行中Xy包含缺失数据。

r = rmmissing([x y]);%删除缺失条目的数据x = r(:,1:结束-1);Y = R(:,结束);

标准化预测变量。

Z = zscore (X);

方法自动优化超参数'OptimizeHyperparameters'名称-值对的论点。找到最佳“DiscrimType”最大限度地减少拒绝交叉验证损失的值。(指定'汽车'使用“DiscrimType”.)为了再现性,请使用“预期改善加成”获取函数,并使用RNG.tallrng.结果可以根据工人数量和高大阵列的执行环境而有所不同。有关详细信息,请参见控制代码运行的位置

rng ('默认') tallrng ('默认')[mdl,fitinfo,hyperparameteroptimationresults] = fitcdiscr(z,y,...'OptimizeHyperparameters''汽车'...“HyperparameterOptimizationOptions”,struct(“坚持”,0.3,...'获取功能名称'“预期改善加成”)))
using the Parallel Pool 'local': - Pass 1 of 2:在5.7 sec内完成- Pass 2 of 2:在4.3 sec内完成在2.5秒完成评估在2.8秒完成  |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| | |运行时(观察)| (estim) | ||======================================================================================| | 最好1 | | 0.11354 | 25.315 | 0.11354 | 0.11354 |二次|
使用并行池“本地”评估高表达: - 通过1:在1.5秒评估中完成的1.5秒评估,使用并行池“本地”评估高表达式: - 通过1:1:在1.4秒评估中完成的1/1:完成1.6秒|2 |接受|0.11354 |7.9367 |0.11354 |0.11354 |Pseudoquadra |
评估使用并行池“本地”高表达: - 的1遍1:在0.87秒评价完成在2秒完成评估使用并行池“本地”高表达: - 的1遍1:在0.78秒评价完成在完成0.91秒|3 |接受|0.12869 |6.5057 |0.11354 |0.11859 |拟线性|
评估使用并行池“本地”高表达: - 的1遍1:在0.9秒评价完成在1.7秒完成评估使用并行池“本地”高表达: - 的1遍1:在1.3秒评价完成在完成1.4秒|4 |接受|0.12745 |6.4167 |0.11354 |0.1208 |diagLinear |
使用并行池“本地”评估高表达: - 通过1:0.85秒的评估中已完成,在1.7秒的评估中完成使用并行池“本地”评估高表达: -  PASS 1,共1分:在0.8秒评估中完成0.93秒|5 |接受|0.12869 |6.1236 |0.11354 |0.12238 |线性|
使用并行池“本地”评估高表达: - 通过1:在0.85秒的评估中完成,在1.5秒评估高度表达式中,使用并行池“本地”评估: -  PASS 1为1:0.75秒评估完成0.9秒|6 |最好的0.11301 |5.4147 |0.11301 |0.12082 |diagquadrati |
使用并行池“本地”评估高表达: - 通过1/1:在0.82秒的评估中完成,在1.5秒评估高度表达式中,使用并行池“本地”评估: -  PASS 1为1:在0.77秒内完成的评估0.89秒|7 |接受|0.11301 |5.297 |0.11301 |0.11301 |diagquadrati |
使用并行池“本地”评估tall表达式:-通过1/1:在0.84秒内完成评估在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1/1:在0.8秒内完成评估在0.93秒内完成| 8 |接受| 0.11301 | 5.6152 | 0.11301 | 0.11301 | Diagquarti|
使用并行池“本地”评估高表达: - 通过1:1:在1.3秒评估中完成,在2.1秒的评估中完成使用并行池“本地”评估高表达式: -  PASS 1为1:在0.75秒的评估中完成0.88秒|9 |接受|0.11301 |5.9147 |0.11301 |0.11301 |diagquadrati |
评估高表达式使用并行池“当地”:通过1对1:在0.88秒完成评估在1.6秒完成评估高表达式使用并行池“当地”:通过1对1:在1.3秒完成评估完成1.4秒| 10 |接受| 0.11301 | 6.0504 | 0.11301 | 0.11301 | diagQuadrati |
评估高表达式使用并行池“当地”:通过1对1:在0.82秒完成评估在1.5秒完成评估高表达式使用并行池“当地”:通过1对1:在1.3秒完成评估完成1.4秒| | 11日接受| 0.11301 | 5.9595 | 0.11301 | 0.11301 | diagQuadrati |
评估使用并行池“本地”高表达: - 的1遍1:在0.86秒评价完成在1.6秒完成评估使用并行池“本地”高表达: - 的1遍1:在0.76秒评价完成在完成0.91秒|12 |接受|0.11301 |5.4266 |0.11301 |0.11301 |diagquadrati |
使用并行池“本地”评估高表达: - 通过1:在0.88秒的评估中完成,在1.6秒的评估中完成使用并行池“本地”评估高表达式: -  PASS 1为1:在0.75秒的评估中完成0.87秒|13 |接受|0.11301 |5.3869 |0.11301 |0.11301 |diagquadrati |
使用并行池“本地”评估高表达: - 通过1:在0.83秒的评估中完成,在1.5秒的评估中完成,使用并行池“本地”评估高表达式: -  PASS 1:在0.8秒评估中完成的第1条:完成0.97秒|14 |接受|0.11301 |5.4876 |0.11301 |0.11301 |diagquadrati |
评估高表达式使用并行池“当地”:通过1对1:在0.85秒完成评估在1.5秒完成评估高表达式使用并行池“当地”:通过1对1:在0.73秒完成评估在0.85秒完成15 | |接受| 0.11301 | 5.4052 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1/1:在0.87秒内完成评估在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1/1:在0.78秒内完成评估在0.9秒内完成| 16 |接受| 0.11301 | 5.4434 | 0.11301 | 0.11301 | Diagquarti|
评估高表达式使用并行池“当地”:通过1对1:在0.89秒完成评估在1.6秒完成评估高表达式使用并行池“当地”:通过1对1:在0.8秒完成评估在0.93秒完成17 | |接受| 0.11301 | 5.5804 | 0.11301 | 0.11301 | diagQuadrati |
评估使用并行池“本地”高表达: - 的1遍1:在0.94秒评价完成在1.6秒完成评估使用并行池“本地”高表达: - 的1遍1:在0.79秒评价完成在完成0.92秒|18 |接受|0.11354 |5.616 |0.11301 |0.11301 |Pseudoquadra |
评估高表达式使用并行池“当地”:通过1对1:在0.85秒完成评估在1.5秒完成评估高表达式使用并行池“当地”:通过1对1:在0.76秒完成评估完成0.88秒19 | |接受| 0.11301 | 5.4031 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估高表达: -  PASS 1:0.76秒的评估中完成的1.4秒评估使用并行池“本地”评估高表达式: -  PASS 1为1:在0.75秒的评估中完成0.88秒|20 |接受|0.11301 |5.1974 |0.11301 |0.11301 |diagquadrati |
使用并行池“本地”评估高表达: - 通过1:在0.77秒的评估中完成的1.4秒评估,使用并行池“本地”评估高表达式: -  PASS 1为1:在0.75秒的评估中完成0.87秒| ======================================================================================|磨练|eval |目标|目标|Bestsofar |Bestsofar |SCOLIMTYPE | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 21 | Accept | 0.11301 | 5.1418 | 0.11301 | 0.11301 | diagQuadrati |
评估高表达式使用并行池“当地”:通过1对1:在1.3秒完成评估在2秒完成评估高表达式使用并行池“当地”:通过1对1:在0.73秒完成评估完成0.86秒| | 22日接受| 0.11301 | 5.9864 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估高表达: - 通过1:在0.88秒的评估中完成的1.6秒评估,使用并行池“本地”评估高表达式: -  PASS 1在0.78秒的评估中完成0.91秒|23 |接受|0.11354 |5.5656 |0.11301 |0.11301 |二次|
使用并行池“本地”评估tall表达式:-通过1/1:在0.82秒内完成评估在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1/1:在0.77秒内完成评估在0.9秒内完成| 24 |接受| 0.11354 | 5.3012 | 0.11301 | 0.11301 |伪四边形|
评估高表达式使用并行池“当地”:通过1对1:在1.4秒完成评估在2.1秒完成评估高表达式使用并行池“当地”:通过1对1:在0.77秒完成评估在0.9秒完成25 | |接受| 0.11301 | 6.2276 | 0.11301 | 0.11301 | diagQuadrati |
评估使用并行池“本地”高表达: - 的1遍1:在0.86秒评价完成在1.6秒完成评估使用并行池“本地”高表达: - 的1遍1:在0.77秒评价完成在完成0.89秒|26 |接受|0.11301 |5.5308 |0.11301 |0.11301 |diagquadrati |
使用并行池“本地”评估高表达: - 通过1:0.92秒的评估中完成的1.6秒评估,使用并行池“本地”评估高表达式: -  PASS 1为1:在0.88秒的评估中完成1秒|27 |接受|0.11301 |5.7396 |0.11301 |0.11301 |diagquadrati |
评估高表达式使用并行池“当地”:通过1对1:在0.83秒完成评估在1.5秒完成评估高表达式使用并行池“当地”:通过1对1:在0.78秒完成评估完成0.9秒| | 28日接受| 0.11354 | 5.4403 | 0.11301 | 0.11301 |二次|
评估高表达式使用并行池“当地”:通过1对1:在0.86秒完成评估在1.5秒完成评估高表达式使用并行池“当地”:通过1对1:在0.81秒完成评估完成0.93秒| | 29日接受| 0.11301 | 5.3572 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1/1:在0.89秒内完成评估在1.6秒内完成使用并行池“本地”评估tall表达式:-通过1/1:在0.74秒内完成评估在0.85秒内完成| 30 |接受| 0.11354 | 5.2718 | 0.11301 | 0.11301 |二次|

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:229.5689秒。总目标函数评价时间:191.058最佳观测可行点:DiscrimType _____________ diag二次观测目标函数值= 0.11301估计目标函数值= 0.11301函数评价时间= 5.4147最佳估计可行点(根据模型):DiscrimType _____________ diag二次估计目标函数值= 0.11301估计函数评估时间= 5.784使用Parallel Pool 'local'评估tall表达式:- Pass 1 of 1: Completed in 0.76 sec评估在1.4秒内完成
Mdl = CompactClassificationDiscriminant PredictorNames: {'x1' 'x2' 'x3' 'x4' 'x5' 'x6'} ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [0 1] ScoreTransform: 'none' DiscrimType: ' diag二次' Mu: [2×6 double] Coeffs: [2×2 struct]属性,方法
FitInfo =结构没有字段。
HyperParameterOptimizationResults =具有属性的贝叶斯optimization:ObjectFCN:@ CreateBjfcn / Tallobjfcn Variabledions:[1×1 oldizablevariable]选项:[1×1结构] minobjective:0.1130 Xatminobjective:[1×1表] minestimatedobive:0.1130 XATMineStimateGiple:[1×1表]numObjectiveEvaLuations:30总计迭代图中:[30×1双] errortrace:[30×1双]可行性议事:[30×1逻辑]可行性推动力:[30×1双]索引:[30×1双] objectivemimumimumImimumImimumimumimumImimumImimumimumImimumImimumimumImimumimumImumImimumImimumImimumImimumimumImimumImimumImimumImimumimumInum:[30×1双]

输入参数

全部收缩

用于训练模型的样本数据,以表格形式指定。每行TBL.对应于一个观察,并且每列对应于一个预测变量。可选地,TBL.可以为响应变量包含一个额外的列。除了字符向量的单元格数组之外,不允许使用多列变量和单元格数组。

  • 如果TBL.包含响应变量,并且您希望使用所有剩余的变量TBL.作为预测器,然后使用responsevarname.

  • 如果TBL.包含响应变量,并且您只希望使用中剩余变量的子集TBL.作为预测器,然后通过使用指定公式公式

  • 如果TBL.不包含响应变量,然后通过使用指定响应变量y.响应变量的长度和输入的行数TBL.必须是平等的。

数据类型:桌子

中的响应变量名,指定为变量名TBL.

您必须指定responsevarname.作为字符矢量或字符串标量。例如,如果响应变量y存储为资源描述。y,则指定为'Y'.否则,该软件将处理所有列TBL.包括…在内y,作为训练模型时的预测器。

响应变量必须是明确的,字符或字符串数​​组;逻辑或数字向量;或者字符向量的单元格数组。如果y是一个字符数组,那么响应变量的每个元素都必须对应于数组的一行。

良好做法是使用使用的指定类的顺序Classnames.名称值参数。

数据类型:烧焦|字符串

响应变量和预测变量子集的解释模型,指定为以下形式的字符向量或字符串标量'Y〜X1 + X2 + X3'.在这种形式,y表示响应变量,和x1x2, 和x3代表预测变量。

指定变量的子集TBL.作为培训模型的预测器,使用公式。如果指定公式,则软件不使用任何变量TBL.没有出现在公式

公式中的变量名必须是其中的两个变量名TBL.Tbl.Properties.VariableNames)和有效的matlab®标识符。您可以验证变量名TBL.通过使用isvarname.函数。如果变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:烧焦|字符串

类标签,指定为分类,字符或字符串数​​组,逻辑或数字载体,或字符向量的单元阵列。每一排y的对应行的分类X

软件考虑“”(空字符向量),""(空字符串),<缺失>, 和<未定义>y缺少值。因此,该软件不会使用缺失响应的观测训练。

数据类型:分类|烧焦|字符串|逻辑||双重的|细胞

预测值值,指定为数字矩阵。每列X表示一个变量,每行代表一个观察。

fitcdiscr考虑X作为缺失的值。fitcdiscr不使用为X的健康。

数据类型:|双重的

名称值对参数

指定可选的逗号分隔的对名称,价值论点。的名字是参数名称和价值是相应的价值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'isstrimtype','二次','savememory','开'指定二次判别分类器,并不在输出对象中存储协方差矩阵。

请注意

的参数不能同时使用任何交叉验证的名称-值对参数'OptimizeHyperparameters'名称-值对的论点。您可以修改交叉验证'OptimizeHyperparameters'只有使用“HyperparameterOptimizationOptions”名称-值对的论点。

模型参数

全部收缩

用于训练的类名,指定为分类数组、字符数组或字符串数组;逻辑或数字向量;或者字符向量的单元格数组。Classnames.必须具有与响应变量相同的数据类型TBL.或者y

如果Classnames.是字符数组,则每个元素必须与数组的一行相对应。

Classnames.到:

  • 训练过程中,指定类别的顺序。

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

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

默认值Classnames.是响应变量中的所有不同类名的集合TBL.或者y

例子:'classnames',{'b','g'}

数据类型:分类|烧焦|字符串|逻辑||双重的|细胞

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

  • 方阵,成本(i,j)将一个点分类的成本是多少j如果它的真实课程是一世(即,行对应于真类和列对应于所预测的类)。要为相应的行和列指定类订单成本,另外指定Classnames.名称-值对的论点。

  • 结构S.有两个领域:S.ClassNames含有的组名称作为作为相同类型的变量y, 和S.Classificycosts.含有成本矩阵。

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

数据类型:|双重的|结构体

线性系数阈值,指定为逗号分隔对组成“δ”和一个非负标量值。如果一个系数MDL.有幅度小于三角洲MDL.设此系数为0.,您可以从模型中消除相应的预测器。放三角洲设置为更高的值以消除更多的预测值。

三角洲必须是0.二次判别模型。

数据类型:|双重的

判别式,指定为逗号分隔的一对组成的“DiscrimType”并且在该表中的字符向量或标量的字符串。

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

  • Σ ^ γ = 1 γ Σ ^ + γ 诊断 Σ ^

    Σ ^ 是经验的,合并的协方差矩阵和吗γ为正规化的量。

“diaglinear” LDA 所有类都有相同的对角协方差矩阵。
“pseudolinear” LDA 所有类有相同的协方差矩阵。该软件使用伪逆反转协方差矩阵。
'二次' 二次判别分析(QDA) 协方差矩阵可以在课堂之间变化。
“diagquadratic” QDA 协方差矩阵是对角矩阵,在不同类别中可能有所不同。
“pseudoquadratic” QDA 协方差矩阵可以在课堂之间变化。该软件使用伪逆反转协方差矩阵。

请注意

要使用正则,你必须指定'线性'.要指定正规化的量,使用伽玛名称-值对的论点。

例子:“判别型”、“二次型”

多项式系数属性标志,指定为逗号分隔对,由“FillCoeffs”'在'或者'离开'.将标志设置为'在'填充这一点多项式系数属性。这可能需要大量计算,尤其是在交叉验证时。默认值为'在'中,除非指定了交叉验证名称 - 值对,在这种情况下该标志被设置为'离开'默认情况下。

例子:“fillcoefs”,“off”

估计预测值的协方差矩阵时应用的正则化量,指定为逗号分隔对,包括'伽玛'以及区间[0,1]内的标量值。伽玛提供比协方差矩阵结构更精细的控制鉴定

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

    • 对于线性判别分析,如果经验协方差矩阵是奇异的,则软件会自动应用反转协方差矩阵所需的最小正则化。您可以通过输入mdl.gamma.在命令行。

    • 对于二次判别分析,如果至少一个类具有单数的经验协方差矩阵,则软件抛出错误。

  • 如果在间隔(0,1)中指定值(0,1),则必须实现线性判别分析,否则软件将抛出错误。因此,软件集鉴定'线性'

  • 如果您指定1,然后软件使用最大正则化进行协方差矩阵估计。也就是说,软件限制协方差矩阵为对角线。或者,您可以设置鉴定“diagLinear”或者'diagquadratic'用于对角线协方差矩阵。

例子:'γ',1

数据类型:|双重的

预测器变量名,指定为唯一的名称或唯一的字符向量的单元阵列的一个字符串数组。的功能预测取决于您提供培训数据的方式。

  • 如果你提供Xy,则可以使用预测将名称分配给Predictor变量X

    • 名字的顺序预测必须对应的列顺序X.就是,predictornames {1}X (: 1)predictornames {2}X (:, 2)等等也,大小(X, 2)numel(PredictorNames)必须是平等的。

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

  • 如果你提供TBL.,则可以使用预测选择用于培训的预测变量。那是,fitcdiscr仅使用中的预测变量预测和训练期间的响应变量。

    • 预测必须是一个子集Tbl.Properties.VariableNames且不能包含响应变量的名称。

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

    • 一个好的实践是指定使用这两种方法进行训练的预测器“PredictorNames”或者公式,但不是两者。

例子:'predictornames',{sepallength','sepalwidth','petallength','petalwidth'}

数据类型:字符串|细胞

每个类的先验概率,指定为逗号分隔对,由'事先的'并在此表中的值。

价值 描述
“经验” 课程的现有概率是类相对频率y
“统一” 所有类先验概率等于1 /K.哪里K.为类数。
数字矢量 每个元素都是一个类先验概率。将元素按顺序排列MDL..ClassNames或使用Classnames.名称-值对的论点。软件将元素标准化,使它们相加为1
结构体

建筑物S.有两个领域:

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

  • S.ClassProbs包含相应先验概率的向量。软件将元素标准化,使其总和为1

如果您为两者设置值重量事先的时,权重被重归一化,使其与所属类的先验概率值相加。

例子:“优先”,“制服”

数据类型:烧焦|字符串||双重的|结构体

响应变量名,指定为字符向量或字符串标量。

  • 如果你提供y,则可以使用'responsebame'指定响应变量的名称。

  • 如果你提供responsevarname.或者公式,则不能使用'responsebame'

例子:“ResponseName”、“响应”

数据类型:烧焦|字符串

标志要保存协方差矩阵,指定为逗号分隔对组成'SaveMemory'和任何一种'在'或者'离开'.如果您指定'在',然后fitcdiscr不存储完整的协方差矩阵,而是存储足够的信息来计算矩阵。这预测方法计算用于预测的完整协方差矩阵,并且不存储矩阵。如果您指定'离开',然后fitcdiscr计算并存储完整的协方差矩阵MDL.

指定SaveMemory.作为'在'当输入矩阵包含数千个预测器时。

例子:“SaveMemory”,“上”

分数转换,指定为字符向量、字符串标量或函数句柄。

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

价值 描述
“doublelogit” 1 /(1 +E.2X
“因弗罗吉特” 日志(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.

观察权值,指定为逗号分隔的对,由“重量”和一个数字矢量的数字矢量或变量的名称TBL..该软件在每行中重视观察X或者TBL.具有相应的价值重量.的大小重量必须等于行的行数X或者TBL.

如果将输入数据指定为表TBL.,然后重量可以是变量的名称TBL.包含数字向量的。在这种情况下,必须指定重量作为字符向量或字符串标量。例如,如果权重向量W.存储为资源描述。W.,则指定为'W'.否则,该软件将处理所有列TBL.包括…在内W.,作为预测器或训练模型时的反应。

该软件可实现重量总结相应类中的现有概率的值。

默认情况下,重量那些(N.,1)哪里N.观察的次数在吗X或者TBL.

数据类型:双重的||烧焦|字符串

交叉验证选项

全部收缩

交叉验证标志,指定为逗号分隔的一对组成的“Crossval”'在'或者'离开'

如果您指定'在',然后软件实现10倍交叉验证。

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

或者,稍后通过传递进行交叉验证MDL.横梁

例子:“CrossVal”,“上”

交叉验证分区,指定为cvpartition分区对象由cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建一个交叉验证模型,你只能指定的这四个名字 - 值参数之一:CVPartition坚持KFold, 或者忽略

例子:假设你创建一个随机分区通过使用500个观察5倍交叉验证CVP = CVPARTING(500,'KFOLD',5).然后,您可以使用“CVPartition”,本量利

用于阻止验证的数据的分数,指定为范围(0,1)的标量值。如果您指定'持有',p,则软件完成以下步骤:

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

  2. 存储紧凑型培训的模型训练有素交叉验证模型的性质。

要创建一个交叉验证模型,你只能指定的这四个名字 - 值参数之一:CVPartition坚持KFold, 或者忽略

例子:'持有',0.1

数据类型:双重的|

在交叉验证模型中使用的折叠数,指定为大于1.如果指定的正整数值。KFold, k,则软件完成以下步骤:

  1. 随机分区数据K.套。

  2. 对于每一组,保留所述一组作为验证数据,并且使用其它训练模型K.– 1套。

  3. 储存K.紧凑,训练模型在K.-by-1细胞载体训练有素交叉验证模型的性质。

要创建一个交叉验证模型,你只能指定的这四个名字 - 值参数之一:CVPartition坚持KFold, 或者忽略

例子:'kfold',5

数据类型:|双重的

留下一张交叉验证标志,指定为'在'或者'离开'.如果您指定“Leaveout”,“上”,然后为每一个N.观察(N.是观察的数量,不包括缺失的观察,指定numobservations.模型属性),软件完成以下步骤:

  1. 预留一个观测为验证数据,并使用其他训练模型N.- 1的观察。

  2. 储存N.紧凑,训练有素的型号N.-by-1细胞载体训练有素交叉验证模型的性质。

要创建一个交叉验证模型,你只能指定的这四个名字 - 值参数之一:CVPartition坚持KFold, 或者忽略

例子:“Leaveout”,“上”

Hyperparameter优化选项

全部收缩

要优化的参数,指定为逗号分隔的对'OptimizeHyperparameters'和以下之一:

  • “没有”- 不要优化。

  • '汽车'-使用{'delta','gamma'}

  • '全部'-优化所有符合条件的参数。

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

  • 矢量optimizableVariable对象,通常是普遍存在

优化的尝试,以尽量减少交叉验证的损失(错误)fitcdiscr通过改变参数。有关交叉验证丢失的信息(尽管在不同的上下文中),请参见分类损失.为了控制交叉验证类型和优化等方面,使用HyperParameterOptimizationOptions.名称-值对。

请注意

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

对符合条件的参数fitcdiscr是:

  • 三角洲-fitcdiscr在正值中搜索,默认在范围内按对数缩放[1E-6,1E3]

  • 鉴定-fitcdiscr搜索中'线性''二次'“diagLinear”'diagquadratic'“伪线性”, 和'伪拟合'

  • 伽玛-fitcdiscr范围内实际值之间的搜索[0,1]

通过传染媒介设置非菲达参数optimizableVariable具有非默认值的对象。例如

加载渔民params = hyperparameters ('fitcdiscr'量,物种);参数(1)。范围=(1的军医,1 e6);

经过参数作为价值OptimizeHyperparameters

默认情况下,在命令行出现迭代显示,并根据优化中超参数的数量出现绘图。对于优化和绘图,目标函数为日志(1 +交叉验证丢失)回归和分类误判率。为了控制迭代显示,设定verb领域“HyperparameterOptimizationOptions”名称-值对的论点。要控制情节,设置Showplots.领域“HyperparameterOptimizationOptions”名称-值对的论点。

例如,看到优化判别分析模型

例子:'汽车'

为优化选项,指定为逗号分隔的一对组成的“HyperparameterOptimizationOptions”和一个结构。此参数修改了OptimizeHyperparameters名称-值对的论点。结构中的所有字段都是可选的。

字段名 价值 默认
优化器
  • 'Bayesopt'- 使用贝叶斯优化。在内部,此设置来电bayesopt

  • 'gridsearch'- 使用网格搜索numgriddivisiving.每个维度的值。

  • “randomsearch”- 在搜索中随机MaxObjectiveEvaluations要点。

'gridsearch'以随机顺序搜索,使用均匀采样而无需替换电网。优化后,您可以使用命令在网格秩序中获取表调用sortRows(Mdl.HyperparameterOptimizationResults)

'Bayesopt'
AcquisitionFunctionName

  • '预期 - 每秒改善'

  • “预计-改善”

  • “预期改善加成”

  • '预期 - 每秒改善'

  • “置信下限”

  • '改善概率'

收购函数,其名称包括每秒不要产生可重复的结果,因为优化取决于目标函数的运行时间。收购函数,其名称包括当它们过度开放区域时修改其行为。有关更多详细信息,请参阅采集功能类型

'预期 - 每秒改善'
MaxObjectiveEvaluations 目标函数评估的最大数量。 30.为了'Bayesopt'或者“randomsearch”,并为整个电网'gridsearch'
MaxTime.

时限,指定为正实。时间限制以秒为单位,用Tic.TOC..运行时间可以超过MaxTime.因为MaxTime.不中断功能的评价。

INF.
numgriddivisiving. 为了'gridsearch',每个维度中的值数。该值可以是给出每个维度值数的正整数向量,也可以是适用于所有维度的标量。对于分类变量,此字段将被忽略。 10.
Showplots. 逻辑值,指示是否显示图表。如果真的,该域根据迭代次数绘制出最佳目标函数值。如果有一个或两个优化参数,如果优化器'Bayesopt',然后Showplots.还根据参数绘制目标函数的模型。 真的
SaveIntermediateResults 表示是否保存结果的逻辑值优化器'Bayesopt'.如果真的,该字段将覆盖名为工作空间可变'BayesoptResults'在每一个迭代。变量是aBayesianOptimization对象。 错误的
verb

显示到命令行。

  • 0.- 没有迭代显示

  • 1-迭代显示

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

有关详细信息,请参阅bayesoptverb名称-值对的论点。

1
使用指α. 指示是否并行运行贝叶斯优化的逻辑值,需要并行计算工具箱™. 由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参阅平行的贝叶斯优化 错误的
再分配

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

真的通常给出最强大的结果,因为此设置考虑了划分的噪声。但是,为了好的结果,真的需要至少两倍的函数评估。

错误的
不超过以下三个字段名称中的一个。
CVPartition 一种cvpartition对象,如所创建的cvpartition “Kfold”,5如果您没有指定任何交叉验证字段
坚持 范围内的标量(0,1)表示不渗透性分数。
Kfold 大于1的整数。

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

数据类型:结构体

输出参数

全部收缩

训练判别分析分类模型,返回为ClassificationDiscriminant模型对象或一个ClassificationededModel.交叉验证的模型对象。

如果设置任何名称值对参数KFold坚持横梁, 或者CVPartition,然后MDL.是一个ClassificationededModel.交叉验证的模型对象。除此以外,MDL.是一个ClassificationDiscriminant模型对象。

参考属性MDL.,使用点记号。例如,为了显示在命令窗口中估计分量的装置,输入Mdl.Mu

更多关于

全部收缩

判别分类

对于判别分析模型是:

  • 每个班级(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