主要内容

预测

类:ClassificationLinear

预测线性分类模型的标签

描述

例子

标签=预测(MdlX返回预测器数据中每个观测值的预测类标签X基于训练的二元线性分类模型Mdl标签中每个正则化强度的类标签Mdl

例子

标签=预测(MdlX“ObservationsIn”,指定预测器数据观测维度“行”(默认)或“列”.例如,指定“ObservationsIn”、“列”表示预测数据中的列与观测值相对应。

例子

标签分数预测,预测___同样的回报分类的分数对于使用前面语法中的任何输入参数组合的两个类。分数中每个正则化强度的分类分数Mdl

输入参数

全部展开

二进制,线性分类模型,指定为ClassificationLinear模型对象。您可以创建ClassificationLinear使用模型对象fitclinear

要分类的预测器数据,指定为完整或稀疏的数字矩阵或表格。

默认情况下,每一行X对应一个观察结果,每一列对应一个变量。

  • 对于数值矩阵:

    • 列中的变量X必须与训练的预测变量有相同的顺序Mdl

    • 如果你训练Mdl使用表格(例如,资源描述),资源描述那么,只包含数值预测变量X可以是数值矩阵。处理中的数值预测器资源描述作为分类的训练,识别分类预测因子使用CategoricalPredictors的名称-值对参数fitclinear.如果资源描述包含异构预测变量(例如,数字和分类数据类型)和X是数字矩阵吗预测抛出错误。

  • 对于表格:

    • 预测不支持多列变量或除金宝app字符向量的单元格数组外的单元格数组。

    • 如果你训练Mdl使用表格(例如,资源描述),然后输入所有预测变量X必须具有与训练的变量相同的变量名和数据类型Mdl(存储在Mdl。PredictorNames).的列序X是否需要对应的列顺序资源描述.同时,资源描述而且X可以包含额外的变量(响应变量、观察权重等),但是预测忽略了它们。

    • 如果你训练Mdl使用一个数字矩阵,然后预测器名称在Mdl。PredictorNames必须与中对应的预测变量名称相同X.若要在训练期间指定预测器名称,请使用PredictorNames的名称-值对参数fitclinear.所有预测变量X必须是数值向量。X可以包含额外的变量(响应变量、观察权重等),但是预测忽略了它们。

请注意

如果你定位你的预测矩阵,使观察结果与列相对应,并指定“ObservationsIn”、“列”,那么优化执行时间可能会显著减少。你不能指定“ObservationsIn”、“列”用于表中的预测器数据。

数据类型:表格||

预测器数据观测维数,指定为“列”“行”

请注意

如果你定位你的预测矩阵,使观察结果与列相对应,并指定“ObservationsIn”、“列”,那么优化执行时间可能会显著减少。你不能指定“ObservationsIn”、“列”用于表中的预测器数据。

输出参数

全部展开

预测类标签,返回为类别或字符数组、逻辑或数字矩阵或字符向量的单元格数组。

预测函数将观察结果划分为得分最高的类别。为了观察分数,该函数将观察结果划分为多数类,这在训练标签中所占的比例最大。

在大多数情况下,标签是一个n——- - - - - -l数组的数据类型与观察到的类标签相同(Y)用来训练Mdl(该软件将字符串数组视为字符向量的单元格数组。)n观察的数量在吗X而且l正则化强度的数量在吗Mdl。lambda.也就是说,标签(j预测的类别标签是否用于观察采用正则化强度较高的线性分类模型Mdl。lambda(j

如果Y字符数组和l> 1标签是类标签的单元格数组。

分类的分数,作为n2 -l数字数组。n观察的数量在吗X而且l正则化强度的数量在吗Mdl。lambda评分(kj这是观察分类的分数吗成类k采用正则化强度较高的线性分类模型Mdl。lambda(jMdl。一会存储类的顺序。

如果Mdl。learner“物流”,则分类分数为后验概率。

例子

全部展开

加载NLP数据集。

负载nlpdata

X是一个稀疏矩阵的预测数据,和Y是类标签的分类向量。数据中有两个以上的类。

这些模型应该识别网页中的字数是否来自统计和机器学习工具箱™文档。因此,确定与统计和机器学习工具箱™文档网页对应的标签。

Ystats = Y ==“统计数据”

使用整个数据集训练一个二进制线性分类模型,它可以识别文档网页中的字数是否来自统计和机器学习工具箱™文档。

rng (1);%用于再现性Mdl = fitclinear(X,Ystats);

Mdl是一个ClassificationLinear模型。

预测训练样本,或再替换,标签。

label = predict(Mdl,X);

因为有一个正则化的强度Mdl标签是列向量,其长度等于观测值的个数。

构造一个混淆矩阵。

confusitrain = confusichart (Ystats,label);

图包含一个confusimatrixchart类型的对象。

该模型只错分类了一个“统计数据”文档页面在“统计和机器学习工具箱”文档之外。

加载NLP数据集并对其进行预处理,如预测训练样本标签.转置预测器数据矩阵。

负载nlpdataYstats = Y ==“统计数据”;X = X';

训练一个二进制线性分类模型,可以识别文档网页中的字数是否来自统计和机器学习工具箱™文档。指定保留30%的观察结果。利用SpaRSA对目标函数进行优化。

rng (1)%用于再现性CVMdl = fitclinear(X,Ystats,“规划求解”“sparsa”“坚持”, 0.30,...“ObservationsIn”“列”);Mdl = cvmdl .训练{1};

CVMdl是一个ClassificationPartitionedLinear模型。它包含属性训练有素的,这是一个1乘1单元格数组,包含一个ClassificationLinear软件使用训练集训练的模型。

从分区定义中提取训练和测试数据。

trainIdx = training(CVMdl.Partition);testdx = test(CVMdl.Partition);

预测训练样本和测试样本标签。

labelTrain = predict(Mdl,X(:,trainIdx),“ObservationsIn”“列”);labelTest =预测(Mdl,X(:, testdx),“ObservationsIn”“列”);

因为有一个正则化的强度MdllabelTrain而且labelTest分别为长度等于训练观察数和测试观察数的列向量。

为训练数据构造一个混淆矩阵。

confusitrain = confusichart (Ystats(trainIdx),labelTrain);

图包含一个confusimatrixchart类型的对象。

该模型只错误地将三个文档页面分类为统计和机器学习工具箱文档之外的页面。

为测试数据构造一个混淆矩阵。

confusitest = confusichart (Ystats(testdx),labelTest);

图包含一个confusimatrixchart类型的对象。

该模型错误地将三个文档页面分类为统计和机器学习工具箱之外的页面,并将两个页面分类为内部的页面。

估计测试样本,后验类概率,并通过绘制接受者工作特征(ROC)曲线来确定模型的质量。线性分类模型只返回逻辑回归学习者的后验概率。

加载NLP数据集并对其进行预处理,如预测测试样本标签

负载nlpdataYstats = Y ==“统计数据”;X = X';

通过指定30%的保留样本,将数据随机划分为训练集和测试集。识别测试集索引。

cvp = cvpartition(Ystats,“坚持”, 0.30);idxTest = test(cvp);

训练一个二元线性分类模型。使用SpaRSA拟合逻辑回归学习器。要获得测试集,请指定分区模型。

CVMdl = fitclinear(X,Ystats,“ObservationsIn”“列”“CVPartition”、本量利、...“学习者”“物流”“规划求解”“sparsa”);Mdl = cvmdl .训练{1};

Mdl是一个ClassificationLinear使用分区中指定的训练集训练的模型本量利只有。

预测测试样本的后验类概率。

[~,posterior] = predict(Mdl,X(:,idxTest),“ObservationsIn”“列”);

因为有一个正则化的强度Mdl是一个矩阵,有2列和2行,等于测试集观测值的数量。列包含后验概率Mdl.ClassNames(我)给定一个特定的观察结果。

计算ROC曲线的性能指标(真阳性率和假阳性率),并通过创建的方法找到ROC曲线下的面积(AUC)值rocmetrics对象。

rocObj = rocmetrics(Ystats(idxTest),后部,Mdl.ClassNames);

绘制第二类的ROC曲线情节的函数rocmetrics

情节(rocObj一会= Mdl.ClassNames (2))

图中包含一个轴对象。标题为ROC Curve的坐标轴对象包含3个ROC曲线、散点、直线类型的对象。这些对象表示true (AUC = 0.9985), true模型工作点。

ROC曲线表明,该模型对测试样本观测值进行了近乎完美的分类。

为了确定使用逻辑回归学习器的线性分类模型的良好套索惩罚强度,比较AUC的测试样本值。

加载NLP数据集。预处理数据,如预测测试样本标签

负载nlpdataYstats = Y ==“统计数据”;X = X';

创建一个数据分区,指定保留10%的观察结果。提取测试样本指数。

rng (10);%用于再现性分区= cvpartition(Ystats,“坚持”, 0.10);testdx = test(分区);XTest = X(:, testdx);n = sum(testdx)
N = 3157
YTest = Ystats(testdx);

在测试样本中有3157个观察值。

创建一组11个对数间隔的正则化强度 1 0 - 6 通过 1 0 - 0 5

Lambda = logspace(-6,-0.5,11);

训练使用每种正则化强度的二元线性分类模型。利用SpaRSA对目标函数进行优化。将目标函数的梯度公差降低到1 e-8

CVMdl = fitclinear(X,Ystats,“ObservationsIn”“列”...“CVPartition”分区,“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“λ”λ,“GradientTolerance”1 e-8)
CVMdl = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 1 Partition: [1x1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none'属性,方法

提取训练好的线性分类模型。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023x11 double]偏差:[-11.9079 -11.9079 -11.9079 -9.3362 -6.4290…[Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05…]学习者:“逻辑”属性,方法

Mdl是一个ClassificationLinear模型对象。因为λ是一个正则化强度序列,你能想到吗Mdl作为11个模型,每个模型中的正则化强度为1λ

估计测试样本的预测标签和后验类概率。

[label,posterior] = predict(Mdl1,XTest,“ObservationsIn”“列”);Mdl1.ClassNames;后(3、1、5)
Ans = 1.0000

标签是一个3157 × 11的预测标签矩阵。每一列对应于使用相应的正则化强度训练的模型的预测标签。是一个3157 × 2 × 11的后验类别概率矩阵。列对应类,页对应正则化强度。例如,后(3、1、5)表示第一类(标签)的后验概率0)由所使用的模型分配到观测3λ(5)作为正则化强度是1.0000。

对于每个模型,通过使用计算AUCrocmetrics

auc = 1:数字(Lambda);%预先配置j = 1:数字(Lambda) rocObj = rocmetrics(YTest,后验(:,:,j),Mdl1.ClassNames);auc(j) = rocObj.AUC(1);结束

较高的值λ导致预测变量稀疏性,这是分类器的一个很好的特性。对于每个正则化强度,使用整个数据集和训练模型时相同的选项训练线性分类模型。确定每个模型的非零系数的数量。

Mdl = fitclinear(X,Ystats,“ObservationsIn”“列”...“学习者”“物流”“规划求解”“sparsa”“正规化”“套索”...“λ”λ,“GradientTolerance”1 e-8);numNZCoeff = sum(Mdl.Beta~=0);

在同一图中,绘制每个正则化强度的测试样本错误率和非零系数的频率。在对数尺度上画出所有变量。

图yyaxis情节(log10(λ)log10 (auc),“啊——”) ylabel (“log_ {10} AUC的) yyaxis正确的plot(log10(Lambda),log10(numNZCoeff + 1),“啊——”) ylabel ('log_{10}非零系数频率')包含(“log_{10}λ的)标题(测试样本统计的)举行

图中包含一个轴对象。标题为Test-Sample Statistics的axis对象包含2个类型为line的对象。

选择正则化强度指数,以平衡预测变量稀疏性和高AUC。在本例中,为之间的值 1 0 - 2 1 0 - 1 应该足够了。

idxFinal = 9;

Mdl用所选的正则化强度。

MdlFinal = selectModels(Mdl,idxFinal);

MdlFinal是一个ClassificationLinear包含一个正则化强度的模型。要估计新观测值的标签,请通过MdlFinal新的数据预测

更多关于

全部展开

扩展功能

版本历史

在R2016a中引入