fitcdiscr
拟合判别分析分类器
语法
描述
根据表中包含的输入变量(也称为预测器、特征或属性)返回一个拟合的判别分析模型Mdl
= fitcdiscr (资源描述
,ResponseVarName
)资源描述
而输出(响应或标签)包含在ResponseVarName
.
例子
训练判别分析模型
载入费雪的虹膜数据集。
负载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 | 0.74581 | 0.66667 | 0.66667 | 13.261 | 0.25218 | | 2 |最好| 0.02 | 0.14119 | 0.02 | 0.064227 | 2.7404 e-05 | 0.073264 | | 3 | |0.04 | 0.16638 | 0.02 | 0.020084 | 3.2455 e-06 | 0.46974 | | 4 |接受| 0.66667 | 0.21562 | 0.02 | 0.020118 | 14.879 | 0.98622 | | 5 |接受| 0.046667 | 0.37289 | 0.02 | 0.019907 | 0.00031449 | 0.97362 | | 6 |接受| 0.04 | 0.20498 | 0.02 | 0.028438 | 4.5092 e-05 | 0.43616 | | | 7日接受| 0.046667 | 0.19754 | 0.02 | 0.031424 | 2.0973 e-05 | 0.9942 | | 8 |接受| 0.02 | 0.23743 | 0.02 | 0.022424 | 1.0554 e-06 | 0.0024286 | | | 9日接受| 0.02 | 0.11797 | 0.02 | 0.021105 | 1.1232 e-06 |10 0.00014039 | | |接受| 0.02 | 0.22241 | 0.02 | 0.020948 | 0.00011837 | 0.0032994 | | | 11日接受| 0.02 | 0.20794 | 0.02 | 0.020172 | 1.0292 e-06 | 0.027725 | | | 12日接受| 0.02 | 0.11807 | 0.02 | 0.020105 | 9.7792 e-05 | 0.0022817 | | | 13日接受| 0.02 | 0.11083 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 | | | 14日接受| 0.02 | 0.12808 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 | | | 15日接受| 0.02 | 0.23575 | 0.02 | 0.019461 | 1.1911 e-05 | 0.0010135 | | | 16日接受| 0.02 | 0.13096 |0.02|0.01993 | 0.0017896 | 0.00071115 | | 17 | Accept | 0.02 | 0.11326 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 | | 18 | Accept | 0.02 | 0.24637 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 | | 19 | Accept | 0.02 | 0.20495 | 0.02 | 0.019678 | 0.007292 | 0.0007911 | | 20 | Accept | 0.046667 | 0.12006 | 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.15487 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 | | 22 | Accept | 0.02 | 0.16001 | 0.02 | 0.019755 | 2.5238e-05 | 0.0015542 | | 23 | Accept | 0.02 | 0.2489 | 0.02 | 0.0191 | 1.5478e-05 | 0.0026899 | | 24 | Accept | 0.02 | 0.14779 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 | | 25 | Accept | 0.02 | 0.34714 | 0.02 | 0.019333 | 2.959e-05 | 0.0011358 | | 26 | Accept | 0.02 | 0.19618 | 0.02 | 0.019369 | 2.3111e-06 | 0.0029205 | | 27 | Accept | 0.02 | 0.38069 | 0.02 | 0.019455 | 3.8898e-05 | 0.0011665 | | 28 | Accept | 0.02 | 0.17388 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 | | 29 | Accept | 0.66667 | 0.32982 | 0.02 | 0.019479 | 998.93 | 0.064276 | | 30 | Accept | 0.02 | 0.40859 | 0.02 | 0.01947 | 8.1557e-06 | 0.0008004 |
__________________________________________________________ 优化完成。最大目标:达到30。总功能评估:30总运行时间:45.3682秒总目标功能评估时间:6.7863最佳观测可行点:Delta Gamma __________ ________ 2.7404e-05 0.073264观测目标函数值= 0.02估计目标函数值= 0.022693函数评估时间= 0.14119最佳估计可行点(根据模型):Delta Gamma __________ _________ 2.5238e-05 0.0015542估计的目标函数值= 0.01947估计的函数评估时间= 0.22789
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”
值作为缺失的数据,因此数据存储
取代他们南
值。创建一个包含数据存储中的数据的高表。
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数组的执行环境,结果可能有所不同。有关详细信息,请参见控制代码运行的位置.
rng (“默认”) tallrng (“默认”[Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(Z,Y,...“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“坚持”, 0.3,...“AcquisitionFunctionName”,“expected-improvement-plus”))
使用并行池“local”计算高表达式:-通过1 / 2:在5.7秒内完成-通过2:在4.3秒内完成计算在16秒内完成在2.5秒完成评估在2.8秒完成 |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 最好1 | | 0.11354 | 25.315 | 0.11354 | 0.11354 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在1.5秒内完成评估在2.7秒内完成评估使用并行池“local”:-通过1 / 1:在1.4秒内完成评估在1.6秒内完成| 2 |接受| 0.11354 | 7.9367 | 0.11354 | 0.11354 | pseudoQuadra |
使用并行池“local”评估高表达式:-通过1:在0.87秒完成评估在2秒完成使用并行池“local”评估高表达式:-通过1:在0.78秒完成评估在0.91秒完成| 3 |接受| 0.12869 | 6.5057 | 0.11354 | 0.11859 |伪线性|
使用并行池'local'评估高表达式:-通过1 / 1:在0.9秒完成评估在1.7秒完成评估使用并行池'local': -通过1 / 1:在1.3秒完成评估在1.4秒完成| 4 |接受| 0.12745 | 6.4167 | 0.11354 | 0.1208 | diagLinear |
使用并行池'local'评估高表达式:-通过1 / 1:在0.85秒完成评估在1.7秒完成评估使用并行池'local': -通过1 / 1:在0.8秒完成评估在0.93秒完成| 5 |接受| 0.12869 | 6.1236 | 0.11354 | 0.12238 |线性|
使用并行池“local”评估高表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成:-通过1 / 1:在0.75秒内完成评估在0.9秒内完成| 6 | Best | 0.11301 | 5.4147 | 0.11301 | 0.12082 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.77秒内完成评估在0.89秒内完成| 7 |接受| 0.11301 | 5.297 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.84秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.8秒内完成评估在0.93秒内完成| 8 |接受| 0.11301 | 5.6152 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在1.3秒内完成评估在2.1秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.88秒内完成| 9 |接受| 0.11301 | 5.9147 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 10 |接受| 0.11301 | 6.0504 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在1.3秒内完成评估在1.4秒内完成| 11 |接受| 0.11301 | 5.9595 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.86秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在0.76秒内完成评估在0.91秒内完成| 12 |接受| 0.11301 | 5.4266 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.87秒内完成| 13 |接受| 0.11301 | 5.3869 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.83秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.8秒内完成评估在0.97秒内完成| 14 |接受| 0.11301 | 5.4876 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.73秒内完成评估在0.85秒内完成| 15 |接受| 0.11301 | 5.4052 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.87秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.78秒内完成评估在0.9秒内完成| 16 |接受| 0.11301 | 5.4434 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”评估高表达式:-通过1 / 1:在0.89秒完成评估在1.6秒完成评估使用并行池“local”:-通过1 / 1:在0.8秒完成评估在0.93秒完成| 17 |接受| 0.11301 | 5.5804 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.94秒完成评估在1.6秒完成评估使用并行池“local”:-通过1 / 1:在0.79秒完成评估在0.92秒完成| 18 |接受| 0.11354 | 5.616 | 0.11301 | 0.11301 | pseudoQuadra |
使用并行池“local”计算高表达式:-通过1 / 1:在0.85秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.76秒内完成评估在0.88秒内完成| 19 |接受| 0.11301 | 5.4031 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.76秒内完成评估在1.4秒内完成评估使用并行池'local': -通过1 / 1:在0.75秒内完成评估在0.88秒内完成| 20 |接受| 0.11301 | 5.1974 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.77秒内完成计算,在1.4秒内完成计算在0.75秒完成评估在0.87秒完成 |======================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | DiscrimType | | |结果| |运行时| | (estim(观察) .) | | |======================================================================================| | 21日|接受| 0.11301 | 5.1418 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在1.3秒完成评估在2秒完成评估使用并行池“local”:-通过1 / 1:在0.73秒完成评估在0.86秒完成| 22 |接受| 0.11301 | 5.9864 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.88秒内完成评估在1.6秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.78秒内完成评估在0.91秒内完成| 23 |接受| 0.11354 | 5.5656 | 0.11301 | 0.11301 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在0.82秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.77秒内完成评估在0.9秒内完成| 24 |接受| 0.11354 | 5.3012 | 0.11301 | 0.11301 | pseudoQuadra |
使用并行池'local'计算高表达式:-通过1 / 1:在1.4秒内完成评估在2.1秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.77秒内完成评估在0.9秒内完成| 25 |接受| 0.11301 | 6.2276 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池“local”计算高表达式:-通过1 / 1:在0.86秒内完成评估在1.6秒内完成评估使用并行池“local”:-通过1 / 1:在0.77秒内完成评估在0.89秒内完成| 26 |接受| 0.11301 | 5.5308 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.92秒内完成评估在1.6秒内完成评估使用并行池'local': -通过1 / 1:在0.88秒内完成评估在1秒内完成| 27 |接受| 0.11301 | 5.7396 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.83秒内完成评估在1.5秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.78秒内完成评估在0.9秒内完成| 28 |接受| 0.11354 | 5.4403 | 0.11301 | 0.11301 |二次|
使用并行池“local”计算高表达式:-通过1 / 1:在0.86秒内完成评估在1.5秒内完成评估使用并行池“local”:-通过1 / 1:在0.81秒内完成评估在0.93秒内完成| 29 |接受| 0.11301 | 5.3572 | 0.11301 | 0.11301 | diagQuadrati |
使用并行池'local'计算高表达式:-通过1 / 1:在0.89秒内完成评估在1.6秒内完成评估使用并行池'local'计算高表达式:-通过1 / 1:在0.74秒内完成评估在0.85秒内完成| 30 |接受| 0.11354 | 5.2718 | 0.11301 | 0.11301 |二次|
__________________________________________________________ 优化完成。最大目标:达到30。总运行时间:229.5689秒。总目标函数评估时间:191.058最佳观察可行点:DiscrimType _____________ diag二阶观测目标函数值= 0.11301估计目标函数值= 0.11301函数评估时间= 5.4147最佳估计可行点(根据模型):DiscrimType _____________ diag二阶估计目标函数值= 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: ' 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: 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,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“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”
和此表中的字符向量或字符串标量。
价值 | 描述 | 预测协方差治疗 |
---|---|---|
“线性” |
正则化线性判别分析(LDA) |
|
“diaglinear” |
乔治。 | 所有类都有相同的对角协方差矩阵。 |
“pseudolinear” |
乔治。 | 所有的类都有相同的协方差矩阵。该软件利用伪逆求协方差矩阵。 |
“二次” |
二次判别分析(QDA) | 协方差矩阵可以在不同的类之间变化。 |
“diagquadratic” |
QDA | 协方差矩阵是对角线的,可以在类之间变化。 |
“pseudoquadratic” |
QDA | 协方差矩阵可以在不同的类之间变化。该软件利用伪逆求协方差矩阵。 |
请注意
要使用正则化,必须指定“线性”
.要指定正则化的数量,请使用γ
名称-值对的论点。
例子:“DiscrimType”、“二次”
FillCoeffs
- - - - - -多项式系数
房地产标志
“上”
|“关闭”
多项式系数
属性标志,指定为逗号分隔的一对,由“FillCoeffs”
而且“上”
或“关闭”
.将标志设置为“上”
填充多项式系数
属性中的。这可能需要大量的计算,特别是在交叉验证时。默认值是“上”
,除非指定交叉验证名值对,在这种情况下,标志设置为“关闭”
默认情况下。
例子:“FillCoeffs”,“关闭”
γ
- - - - - -的正则化
区间[0,1]中的标量值
在估计预测器的协方差矩阵时应用的正则化量,指定为逗号分隔的对,由“伽马”
和区间[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次交叉验证本量利= cvpartition(500年,“KFold”,5)
.然后,您可以使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -保留验证的部分数据
(0,1)范围内的标量值
用于抵制验证的数据的一部分,指定为范围(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]
.
通过传递vector来设置非默认参数optimizableVariable
具有非默认值的对象。例如,
负载fisheririsparams = hyperparameters (“fitcdiscr”量,物种);参数(1)。范围=(1的军医,1 e6);
通过参数个数
的价值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编码器™.有关详细信息,请参见代码生成简介.
算法
如果指定
成本
,之前
,权重
参数时,输出模型对象将指定的值存储在成本
,之前
,W
属性,分别。的成本
属性存储用户指定的成本矩阵(C)。的之前
而且W
属性分别存储归一化后的先验概率和观测权值。有关详细信息,请参见错误分类成本矩阵,先验概率和观察权重.该软件使用
成本
属性用于预测,而不是训练。因此,成本
不是只读;您可以在创建训练过的模型后使用点表示法更改属性值。
选择功能
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
支持的语法是:
Mdl = fitcdiscr(资源描述,Y)
Mdl = fitcdiscr (X, Y)
Mdl = fitcdiscr(___、名称、值)
(Mdl FitInfo HyperparameterOptimizationResults] = fitcdiscr(___、名称、值)
- - - - - -fitcdiscr
返回附加的输出参数FitInfo
而且HyperparameterOptimizationResults
当您指定“OptimizeHyperparameters”
名称-值对的论点。
的
FitInfo
输出参数是一个空的结构数组,目前为将来可能使用保留。的
HyperparameterOptimizationResults
输出参数是BayesianOptimization
对象或带有描述超参数交叉验证优化的关联值的超参数表。“HyperparameterOptimizationResults”
非空时“OptimizeHyperparameters”
在创建模型时,名称-值对参数是非空的。中的值“HyperparameterOptimizationResults”
的值“HyperparameterOptimizationOptions”
创建模型时的名称-值对参数。如果您指定
“bayesopt”
(默认)HyperparameterOptimizationResults
是阶级的对象吗BayesianOptimization
.如果您指定
“gridsearch”
或“randomsearch”
,然后HyperparameterOptimizationResults
是所使用的超参数、观测目标函数值(交叉验证损失)和观测值从最低(最佳)到最高(最差)的排序的表。
受支持的名-值对参数及其区别是:
“类名”
“成本”
“DiscrimType”
“HyperparameterOptimizationOptions”
-对于交叉验证,只支持tall优化“坚持”
验证。默认情况下,软件选择并保留20%的数据作为拒绝验证数据,并使用其余数据训练模型。您可以使用此参数为抵制分数指定不同的值。例如,指定“HyperparameterOptimizationOptions”、结构(“抵抗”,0.3)
保留30%的数据作为验证数据。“OptimizeHyperparameters”
-唯一适合优化的参数是“DiscrimType”
.指定“汽车”
使用“DiscrimType”
.“PredictorNames”
“之前”
“ResponseName”
“ScoreTransform”
“重量”
对于高数组和高表,
fitcdiscr
返回一个CompactClassificationDiscriminant
对象,该对象包含与类相同的大部分属性ClassificationDiscriminant
对象。主要的区别是紧凑对象对内存需求非常敏感。紧凑对象不包含包含数据或包含与数据大小相同的数组的属性。紧凑对象不包含这些ClassificationDiscriminant
属性:ModelParameters
NumObservations
HyperparameterOptimizationResults
RowsUsed
XCentered
W
X
Y
此外,compact对象不支持这些
ClassificationDiscriminant
方法:紧凑的
crossval
cvshrink
resubEdge
resubLoss
resubMargin
resubPredict
有关更多信息,请参见高大的数组.
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitcdiscr
函数。
有关并行超参数优化的更多信息,请参见平行的贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持(并行计算工具箱).
版本历史
介绍了R2014a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。