拟合判别分析分类器
根据表中包含的输入变量(也称为预测器、特征或属性)返回拟合的判别分析模型Mdl
= fitcdiscr (资源描述
,ResponseVarName
)资源描述
和输出(响应或标签)包含在ResponseVarName
.
加载费雪的虹膜数据集。
负载fisheriris
使用整个数据集训练判别分析模型。
Mdl = fitcdiscr(meas,species)
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
通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。
为了重现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng(1) Mdl = fitcdiscr(meas,species,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”,...结构(“AcquisitionFunctionName”,“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFarδ|γ| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.66667 | 0.96067 | 0.66667 | 0.66667 | 13.261 | 0.25218 | | 2 |最好| 0.02 | 0.13747 | 0.02 | 0.064227 | 2.7404 e-05 | 0.073264 | | 3 | |0.04 | 0.18427 | 0.02 | 0.020084 | 3.2455 e-06 | 0.46974 | | 4 |接受| 0.66667 | 0.41926 | 0.02 | 0.020118 | 14.879 | 0.98622 | | 5 |接受| 0.046667 | 0.36277 | 0.02 | 0.019907 | 0.00031449 | 0.97362 | | 6 |接受| 0.04 | 0.32808 | 0.02 | 0.028438 | 4.5092 e-05 | 0.43616 | | | 7日接受| 0.046667 | 0.44098 | 0.02 | 0.031424 | 2.0973 e-05 | 0.9942 | | 8 |接受| 0.02 | 0.35513 | 0.02 | 0.022424 | 1.0554 e-06 | 0.0024286 | | | 9日接受| 0.02 | 0.33408 | 0.02 | 0.021105 | 1.1232 e-06 |10 0.00014039 | | |接受| 0.02 | 0.33577 | 0.02 | 0.020948 | 0.00011837 | 0.0032994 | | | 11日接受| 0.02 | 0.22268 | 0.02 | 0.020172 | 1.0292 e-06 | 0.027725 | | | 12日接受| 0.02 | 0.20244 | 0.02 | 0.020105 | 9.7792 e-05 | 0.0022817 | | | 13日接受| 0.02 | 0.3328 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 | | | 14日接受| 0.02 | 0.31874 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 | | | 15日接受| 0.02 | 0.1383 | 0.02 | 0.019461 | 1.1911 e-05 | 0.0010135 | | | 16日接受| 0.02 | 0.20366 |0.02 | 0.01993 | 0.0017896 | 0.00071115 | | | 17日接受| 0.02 | 0.25298 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 | | | 18日接受| 0.02 | 0.41475 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 | | | 19日接受| 0.02 | 0.32709 | 0.02 | 0.019678 | 0.007292 | 0.0007911 | | |接受20 | 0.046667 | 0.33315 | 0.02 | 0.019785 | 0.0074408 | 0.99945 | |=====================================================================================================| | Iter | Eval客观客观| | | BestSoFarδ|γ| BestSoFar | | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 21日|接受| 0.02 | 0.36237 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 | | | 22日接受| 0.02 | 0.15619 | 0.02 | 0.019755 | 2.5238 e-05 | 0.0015542 | | | 23日接受| 0.02 | 0.39043 | 0.02 | 0.0191 | 1.5478 e-05 | 0.0026899 | | | 24日接受| 0.02 | 0.31182 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 | | 25 |接受| 0.02 | 0.23464 | 0.02 | 0.019333 | 2.959 e-05 | 0.0011358 | | | 26日接受| 0.02 | 0.28808 | 0.02 | 0.019369 | 2.3111 e-06 | 0.0029205 | | | 27日接受| 0.02 | 0.69007 | 0.02 | 0.019455 | 3.8898 e-05 | 0.0011665 | | | 28日接受| 0.02 | 0.30649 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 | | | 29日接受| 0.66667 | 0.48235 | 0.02 | 0.019479 | 998.93 | 0.064276 | | | 30日接受| 0.02 | 0.52099 | 0.02 | 0.01947 | 8.1557 e-06 | 0.0008004 |
__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:58.8335秒总目标函数评估时间:10.3485最佳观测可行点:Delta Gamma __________ ________ 2.7404e-05 0.073264观测目标函数值= 0.02估计目标函数值= 0.022693函数评估时间= 0.13747最佳估计可行点(根据模型):Delta Gamma __________ _________ 2.5238e-05 0.0015542估计目标函数值= 0.01947估计函数评估时间= 0.2888
Mdl = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] discritype: 'linear' Mu: [3x4 double] Coeffs: [3x3 struct] Properties, Methods
对于缺省的5倍交叉验证,拟合达到约2%的损失。
这个例子展示了如何使用高数组自动优化判别分析模型的超参数。示例数据集airlinesmall.csv
是一个大数据集,其中包含航空公司航班数据的表格文件。这个示例创建一个包含数据的高表,并使用它来运行优化过程。
在高数组上执行计算时,MATLAB®使用并行池(如果有并行计算工具箱™,则默认为并行池)或本地MATLAB会话。如果要在具有并行计算工具箱时使用本地MATLAB会话运行示例,可以使用mapreduce
函数。
创建一个使用数据引用文件夹位置的数据存储。选择要处理的变量子集,并进行处理“NA”
值作为丢失的数据,以便数据存储
将它们替换为南
值。创建一个高表,其中包含数据存储中的数据。
数据存储(“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。10 . DepDelay >%等级标签
Y = M×1 tall逻辑阵列1 0 1 1 0 1 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 10 6 859 11 954::::::::::::
删除中的行X
而且Y
其中包含丢失的数据。
R = rmmissing([X Y]);%删除丢失条目的数据X = R(:,1:end-1);Y = R(:,end);
标准化预测变量。
Z = zscore(X);
方法自动优化超参数“OptimizeHyperparameters”
名称-值对参数。找到最优“DiscrimType”
使拒绝交叉验证损失最小化的值。(指定“汽车”
使用“DiscrimType”
)。为了重现性,使用“expected-improvement-plus”
采集函数和设置随机数的种子发生器使用rng
而且tallrng
.根据工作人员的数量和tall数组的执行环境,结果可能有所不同。详细信息请参见控制代码运行的位置.
rng (“默认”) tallrng (“默认”) [Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(Z,Y,...“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“坚持”, 0.3,...“AcquisitionFunctionName”,“expected-improvement-plus”))
使用并行池“本地”评估高表达式:-通过1 / 2:在5.7秒内完成-通过2 / 2:在4.3秒内完成评估在16秒内完成使用并行池“本地”评估高表达式:-通过1 / 1:在2.5秒完成评估在2.8秒完成 |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 最好1 | | 0.11354 | 25.315 | 0.11354 | 0.11354 |二次|
使用并行池“local”评估tall表达式:-通过1 / 1:在1.5秒内完成评估在2.7秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在1.4秒内完成评估在1.6秒内完成| 2 |接受| 0.11354 | 7.9367 | 0.11354 | 0.11354 | pseudoQuadra |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.87秒内完成评估:-通过1 / 1:在0.78秒内完成评估在0.91秒内完成| 3 |接受| 0.12869 | 6.5057 | 0.11354 | 0.11859 |伪线性|
使用并行池“local”评估tall表达式:-通过1 / 1:在0.9秒内完成评估在1.7秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 4 |接受| 0.12745 | 6.4167 | 0.11354 | 0.1208 | diagLinear |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.85秒内完成评估在1.7秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.8秒内完成评估在0.93秒内完成| 5 |接受| 0.12869 | 6.1236 | 0.11354 | 0.12238 |线性|
使用并行池“local”评估tall表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.75秒内完成评估在0.9秒内完成| 6 | Best | 0.11301 | 5.4147 | 0.11301 | 0.12082 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.77秒内完成评估在0.89秒内完成| 7 |接受| 0.11301 | 5.297 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.8秒内完成评估在0.93秒内完成| 8 |接受| 0.11301 | 5.6152 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在1.3秒内完成评估在2.1秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.75秒内完成评估在0.88秒内完成| 9 |接受| 0.11301 | 5.9147 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 10 |接受| 0.11301 | 6.0504 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 11 |接受| 0.11301 | 5.9595 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.86秒内完成评估在1.6秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.76秒内完成评估在0.91秒内完成| 12 |接受| 0.11301 | 5.4266 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.75秒内完成评估在0.87秒内完成| 13 |接受| 0.11301 | 5.3869 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.83秒内完成评估在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.8秒内完成评估在0.97秒内完成| 14 |接受| 0.11301 | 5.4876 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.85秒内完成评估,在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.73秒内完成评估,在0.85秒内完成| 15 |接受| 0.11301 | 5.4052 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.87秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.78秒内完成评估在0.9秒内完成| 16 |接受| 0.11301 | 5.4434 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估高表达式:-通过1 / 1:在0.89秒内完成评估,在1.6秒内完成评估,使用并行池“本地”:-通过1 / 1:在0.8秒内完成评估,在0.93秒内完成| 17 |接受| 0.11301 | 5.5804 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.94秒内完成评估在1.6秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.79秒内完成评估在0.92秒内完成| 18 |接受| 0.11354 | 5.616 | 0.11301 | 0.11301 | pseudoQuadra |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.76秒内完成评估在0.88秒内完成| 19 |接受| 0.11301 | 5.4031 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估高表达式:-通过1 / 1:在0.76秒内完成评估,在1.4秒内完成评估,使用并行池“本地”:-通过1 / 1:在0.75秒内完成评估,在0.88秒内完成| 20 |接受| 0.11301 | 5.1974 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估高表达式:-通过1 / 1:在0.77秒内完成评估,在1.4秒内完成使用并行池“本地”评估高表达式:-通过1 / 1:在0.75秒完成评估在0.87秒完成 |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 21日|接受| 0.11301 | 5.1418 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在1.3秒内完成评估在2秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.73秒内完成评估在0.86秒内完成| 22 |接受| 0.11301 | 5.9864 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.78秒内完成评估在0.91秒内完成| 23 |接受| 0.11354 | 5.5656 | 0.11301 | 0.11301 |二次|
使用并行池“local”评估tall表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.77秒内完成评估在0.9秒内完成| 24 |接受| 0.11354 | 5.3012 | 0.11301 | 0.11301 | pseudoQuadra |
使用并行池“local”评估tall表达式:-通过1 / 1:在1.4秒内完成评估在2.1秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.77秒内完成评估在0.9秒内完成| 25 |接受| 0.11301 | 6.2276 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.86秒内完成评估在1.6秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.77秒内完成评估在0.89秒内完成| 26 |接受| 0.11301 | 5.5308 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“本地”评估tall表达式:-通过1 / 1:在0.92秒内完成评估在1.6秒内完成使用并行池“本地”评估tall表达式:-通过1 / 1:在0.88秒内完成评估在1秒内完成| 27 |接受| 0.11301 | 5.7396 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.83秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.78秒内完成评估在0.9秒内完成| 28 |接受| 0.11354 | 5.4403 | 0.11301 | 0.11301 |二次|
使用并行池“local”评估tall表达式:-通过1 / 1:在0.86秒内完成评估在1.5秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.81秒内完成评估在0.93秒内完成| 29 |接受| 0.11301 | 5.3572 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估tall表达式:-通过1 / 1:在0.89秒内完成评估在1.6秒内完成使用并行池“local”评估tall表达式:-通过1 / 1:在0.74秒内完成评估在0.85秒内完成| 30 |接受| 0.11354 | 5.2718 | 0.11301 | 0.11301 |二次|
__________________________________________________________ 优化完成。最大目标达到30个。总函数计算:30总运行时间:229.5689秒。总目标函数评估时间:191.058最佳观测可行点:DiscrimType _____________ diagQuadratic观测目标函数值= 0.11301估计目标函数值= 0.11301函数评估时间= 5.4147最佳估计可行点(根据模型):DiscrimType _____________ diagQuadratic估计目标函数值= 0.11301估计函数评估时间= 5.784使用并行池“local”评估高表达式:-通过1 / 1:评估在1.4秒内完成
Mdl = CompactClassificationDiscriminant PredictorNames: {'x1' 'x2' 'x3' 'x4' 'x5' 'x6'} ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [0 1] ScoreTransform: 'none' discritype: 'diagQuadratic' 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] MinEstimatedObjective: 0.1130 XAtMinEstimatedObjective: [1×1 table] numobjectiveevalues: 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]可行性跟踪:[30×1 logical]可行性概率跟踪:[30×1 double] IndexOfMinimumTrace: [30×1 double] objectivminimumtrace: [30×1 double] estimatedobjectivminimumtrace: [30×1 double]
资源描述
- - - - - -样本数据用于训练模型的示例数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。
如果资源描述
包含响应变量,您希望在中使用所有剩余变量资源描述
作为预测器,然后通过使用指定响应变量ResponseVarName
.
如果资源描述
包含响应变量,并且您希望仅在中使用其余变量的子集资源描述
作为预测器,然后通过使用指定一个公式公式
.
如果资源描述
不包含响应变量,然后通过使用Y
.响应变量的长度和其中的行数资源描述
必须是相等的。
数据类型:表格
公式
- - - - - -响应变量的解释模型和预测变量的子集响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
Y
- - - - - -类标签类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。每行Y
的对应行的分类X
.
软件考虑南
,”
(空字符向量),""
(空字符串),< >失踪
,<定义>
值Y
丢失的值。因此,该软件不会使用缺少响应的观察进行训练。
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
X
- - - - - -预测数据预测器值,指定为数值矩阵。的每一列X
表示一个变量,每一行表示一个观察结果。
fitcdiscr
认为南
值X
作为缺失值。fitcdiscr
不使用缺少值的观察X
合身。
数据类型:单
|双
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“DiscrimType”、“二次”,“SaveMemory”,“上”
指定二次判别分类器,并且不将协方差矩阵存储在输出对象中。
请注意
方法时,不能使用任何交叉验证名称-值参数“OptimizeHyperparameters”
名称-值参数。您可以修改交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值参数。
一会
- - - - - -用于培训的类名用于训练的类名,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。一会
必须具有与响应变量相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须对应数组中的一行。
使用一会
:
在培训期间指定课程的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会
指定…尺寸的顺序成本
或返回的分类分数的列顺序预测
.
选择用于培训的类的子集。例如,假设集合中所有不同的类名Y
是(“a”、“b”、“c”)
.用课堂上的观察来训练模型“一个”
而且“c”
只是,指定“类名”,(“a”、“c”)
.
的默认值一会
响应变量中所有不同类名的集合在吗资源描述
或Y
.
例子:“类名”,(“b”,“g”)
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
δ
- - - - - -线性系数阈值0
(默认)|非负标量值线性系数阈值,指定为由逗号分隔的对组成“δ”
和一个非负标量值。如果的系数Mdl
大小小于δ
,Mdl
将这个系数设为0
,可以从模型中剔除相应的预测器。集δ
到更高的值,以消除更多的预测因素。
δ
必须0
对于二次判别模型。
数据类型:单
|双
DiscrimType
- - - - - -判别类型“线性”
(默认)|“二次”
|“diaglinear”
|“diagquadratic”
|“pseudolinear”
|“pseudoquadratic”
区分类型,指定为逗号分隔的对,由“DiscrimType”
和此表中的字符向量或字符串标量。
价值 | 描述 | 预测因子协方差处理 |
---|---|---|
“线性” |
正则化线性判别分析 |
|
“diaglinear” |
乔治。 | 所有的类都有相同的对角协方差矩阵。 |
“pseudolinear” |
乔治。 | 所有的类都有相同的协方差矩阵。该软件使用伪逆反演协方差矩阵。 |
“二次” |
二次判别分析(QDA) | 协方差矩阵可以在不同的类之间变化。 |
“diagquadratic” |
QDA | 协方差矩阵是对角线的,并且可以在类之间变化。 |
“pseudoquadratic” |
QDA | 协方差矩阵可以在不同的类之间变化。该软件使用伪逆反演协方差矩阵。 |
请注意
要使用正则化,必须指定“线性”
.要指定正则化的量,请使用γ
名称-值对参数。
例子:“DiscrimType”、“二次”
FillCoeffs
- - - - - -多项式系数
房地产标志“上”
|“关闭”
多项式系数
属性标志,指定为逗号分隔的对,由“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 . |
结构 | 一个结构
|
如果你同时设置两个值权重
而且之前
时,将权重重新规整,使其加起来等于相应类别中的先验概率值。
例子:“前”、“制服”
数据类型:字符
|字符串
|单
|双
|结构体
ResponseName
- - - - - -响应变量名“Y”
(默认)|特征向量|字符串标量响应变量名,指定为字符向量或字符串标量。
如果你提供Y
,那么你就可以使用了ResponseName
为响应变量指定名称。
如果你提供ResponseVarName
或公式
,那么你就不能用了ResponseName
.
例子:“ResponseName”、“反应”
数据类型:字符
|字符串
SaveMemory
- - - - - -标记保存协方差矩阵“关闭”
(默认)|“上”
标记以保存协方差矩阵,指定为逗号分隔的对,由“SaveMemory”
,要么“上”
或“关闭”
.如果你指定“上”
,然后fitcdiscr
不存储完整的协方差矩阵,而是存储足够的信息来计算矩阵。的预测
方法计算用于预测的完整协方差矩阵,并且不存储矩阵。如果你指定“关闭”
,然后fitcdiscr
计算并存储完整的协方差矩阵Mdl
.
指定SaveMemory
作为“上”
当输入矩阵包含数千个预测器时。
例子:“SaveMemory”,“上”
ScoreTransform
- - - - - -分数转换“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|“分对数”
|函数处理|……分数转换,指定为字符向量、字符串标量或函数句柄。
该表总结了可用的字符向量和字符串标量。
价值 | 描述 |
---|---|
“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
权重
- - - - - -观察权重资源描述
CVPartition
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5)
.然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -顽固性验证的数据比例用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择并保留p * 100
%的数据作为验证数据,并使用其余数据训练模型。
将紧凑的、训练过的模型存储在训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -折叠数10
(默认)|大于1的正整数值交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为k
集。
对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k
- 1集。
存储k
紧凑,训练有素的模型k
的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -省略一个交叉验证标志“关闭”
(默认)|“上”
省略一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations
属性的模型),软件完成这些步骤:
保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。
存储n紧凑,训练有素的模型在一个n的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
OptimizeHyperparameters
- - - - - -需要优化的参数“没有”
(默认)|“汽车”
|“所有”
|符合条件的参数名的字符串数组或单元格数组|向量的optimizableVariable
对象参数进行优化,指定为由逗号分隔的对组成“OptimizeHyperparameters”
和以下其中之一:
“没有”
-不要优化。
“汽车”
——使用{“三角洲”,“伽马”}
.
“所有”
-优化所有符合条件的参数。
符合条件的参数名的字符串数组或单元格数组。
向量的optimizableVariable
对象的输出hyperparameters
.
优化尝试最小化交叉验证损失(错误)fitcdiscr
通过改变参数。有关交叉验证丢失的信息(尽管是在不同的上下文中),请参见分类损失.若要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称-值对。
请注意
的价值“OptimizeHyperparameters”
重写使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
原因fitcdiscr
方法所对应的超参数“汽车”
选项并忽略超参数的任何指定值。
符合条件的参数fitcdiscr
是:
δ
- - - - - -fitcdiscr
在正数值中搜索,默认情况下在范围内按对数缩放(1 e-6, 1 e3)
.
DiscrimType
- - - - - -fitcdiscr
搜索中“线性”
,“二次”
,“diagLinear”
,“diagQuadratic”
,“pseudoLinear”
,“pseudoQuadratic”
.
γ
- - - - - -fitcdiscr
在范围内的实值中搜索[0, 1]
.
通过传递的向量来设置非默认参数optimizableVariable
具有非默认值的对象。例如,
负载fisheririsParams =超参数(“fitcdiscr”量,物种);参数(1)。Range = [1e-4,1e6];
通过参数个数
作为价值OptimizeHyperparameters
.
默认情况下,迭代显示出现在命令行上,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为误分类率。要控制迭代显示,请设置详细的
字段“HyperparameterOptimizationOptions”
名称-值参数。为了控制情节,设置ShowPlots
字段“HyperparameterOptimizationOptions”
名称-值参数。
有关示例,请参见优化判别分析模型.
例子:“汽车”
HyperparameterOptimizationOptions
- - - - - -优化选项用于优化的选项,指定为结构。的效果OptimizeHyperparameters
名称-值参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
名称包括的获取函数 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大个数。 | 30. 为“bayesopt” 而且“randomsearch” ,而整个电网为“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,由 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出目标函数的最佳估计值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代分别显示。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个用于贝叶斯优化的优化参数,则ShowPlots 还绘制了目标函数对参数的模型。 |
真正的 |
SaveIntermediateResults |
时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代中重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
使用以下三个选项中的一个即可。 | ||
CVPartition |
一个cvpartition 对象创建的cvpartition |
“Kfold”,5 如果没有指定交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示抵抗分数 |
|
Kfold |
大于1的整数 |
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
Mdl
-训练判别分析分类模型ClassificationDiscriminant
模型对象|ClassificationPartitionedModel
交叉验证的模型对象训练判别分析分类模型,返回为ClassificationDiscriminant
模型对象或ClassificationPartitionedModel
交叉验证的模型对象。
如果您设置了任何名称-值对参数KFold
,坚持
,CrossVal
,或CVPartition
,然后Mdl
是一个ClassificationPartitionedModel
交叉验证的模型对象。否则,Mdl
是一个ClassificationDiscriminant
模型对象。
引用Mdl
,使用点表示法。例如,要在命令窗口中显示估计的组件平均值,请输入Mdl。μ
.
判别分析模型为:
每节课(Y
)生成数据(X
),采用多元正态分布。也就是说,该模型假设X
为高斯混合分布(gmdistribution
).
对于线性判别分析,每一类模型的协方差矩阵相同,只是均值不同。
对于二次判别分析,每一类的均值和协方差都是不同的。
预测
进行分类,以使期望的分类成本最小化:
在哪里
详细信息请参见使用判别分析模型进行预测.
在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介.
使用注意事项和限制:
金宝app支持的语法是:
Mdl = fitcdiscr(Tbl,Y)
Mdl = fitcdiscr(X,Y)
Mdl = fitcdiscr(___,名称,值)
[Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(___,Name,Value)
- - - - - -fitcdiscr
返回额外的输出参数FitInfo
而且HyperparameterOptimizationResults
当您指定“OptimizeHyperparameters”
名称-值对参数。
的FitInfo
参数Output是一个空的结构数组,当前为将来可能使用而保留。
的HyperparameterOptimizationResults
输出参数是BayesianOptimization
对象或包含描述超参数交叉验证优化的关联值的超参数表。
“HyperparameterOptimizationResults”
当“OptimizeHyperparameters”
在创建模型时,名称-值对参数为非空。中的值“HyperparameterOptimizationResults”
属性指定的值“HyperparameterOptimizationOptions”
名称-值对参数。
如果你指定“bayesopt”
(默认)HyperparameterOptimizationResults
是类的对象吗BayesianOptimization
.
如果你指定“gridsearch”
或“randomsearch”
,然后HyperparameterOptimizationResults
是使用的超参数、观察到的目标函数值(交叉验证损失)以及从最低(最好)到最高(最差)的观察值的列表。
金宝app支持的名称-值对参数,以及任何差异,是:
“类名”
“成本”
“DiscrimType”
“HyperparameterOptimizationOptions”
-对于交叉验证,只支持高优化金宝app“坚持”
验证。默认情况下,软件选择并保留20%的数据作为拒绝验证数据,并使用其余数据训练模型。可以使用此参数为拒绝分数指定不同的值。例如,指定“HyperparameterOptimizationOptions”、结构(“抵抗”,0.3)
保留30%的数据作为验证数据。
“OptimizeHyperparameters”
-唯一适合优化的参数是“DiscrimType”
.指定“汽车”
使用“DiscrimType”
.
“PredictorNames”
“之前”
“ResponseName”
“ScoreTransform”
“重量”
对于高数组和高表,fitcdiscr
返回一个CompactClassificationDiscriminant
对象,该对象包含与ClassificationDiscriminant
对象。主要的区别是紧凑对象对内存需求很敏感。紧凑对象不包括包含数据的属性,也不包括与数据大小相同的数组的属性。紧凑对象不包含这些ClassificationDiscriminant
属性:
ModelParameters
NumObservations
HyperparameterOptimizationResults
RowsUsed
XCentered
W
X
Y
此外,compact对象不支持这些金宝appClassificationDiscriminant
方法:
紧凑的
crossval
cvshrink
resubEdge
resubLoss
resubMargin
resubPredict
有关更多信息,请参见高大的数组.
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitcdiscr
函数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。