文档帮助中心文档
预测增量学习线性模型对新观测的响应
label = predict(Mdl,X)
label = predict(Mdl,X,'ObservationsIn',dimension)
[label,score] = predict(预测)___)
例子
标签=预测(Mdl,X)返回预测的响应或标签标签预测数据中的观察结果X从增量学习模型Mdl.
标签=预测(Mdl,X)
标签
Mdl
X
标签=预测(Mdl,X“ObservationsIn”,维)也指定预测器数据的观察维度“行”(默认)或“列”.例如,指定“ObservationsIn”、“列”表示预测器数据中的观测值沿列的方向X.
标签=预测(Mdl,X“ObservationsIn”,维)
维
“行”
“列”
“ObservationsIn”、“列”
[标签,分数预测,预测___)同样的回报分类的分数对于所有类,当Mdl是一种用于分类的增量学习模型,使用前面语法中的任何输入参数组合。
[标签,分数预测,预测___)
分数
全部折叠
加载人类活动数据集。
负载humanactivity
关于数据集的详细信息,请输入描述在命令行。
描述
回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid> 2)。
actid
Y = actid > 2;
对整个数据集拟合线性分类模型。
TTMdl = fitclinear(专长,Y)
TTMdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60×1 double]偏差:-0.2005 Lambda: 4.1537e-05学习者:'svm'属性,方法
TTMdl是一个ClassificationLinear模型对象表示传统训练的线性分类模型。
TTMdl
ClassificationLinear
将传统训练的线性分类模型转换为增量学习的二元分类线性模型。
IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1×2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60×1 double]偏差:-0.2005 Learner: 'svm'属性,方法
IncrementalMdl是一个incrementalClassificationLinear利用支持向量机为增量学习准备模型对象。
IncrementalMdl
incrementalClassificationLinear
的incrementalLearner函数通过将学习到的系数以及其他信息传递给增量学习器来初始化增量学习器TTMdl从训练数据中学习。
incrementalLearner
IncrementalMdl是温暖的(IsWarm是1),这意味着增量学习功能可以开始跟踪性能指标。
IsWarm
1
的incrementalLearner配置使用自适应比例不变求解器训练的模型,而fitclinear训练有素的TTMdl使用BFGS求解器
fitclinear
通过转换传统训练模型创建的增量学习器可以生成预测,而无需进一步处理。
使用这两种模型预测所有观测值的类别标签。
ttlabels = predict(TTMdl,feat);illables = predict(IncrementalMdl,壮举);sameLabels = sum(ttlabels ~= illables) == 0
sameLabels =逻辑1
这两个模型对每个观测结果都预测了相同的标签。
如果你沿着预测器数据矩阵的列定向观察,你可以在增量学习期间体验到效率的提高。
加载和洗牌2015年纽约市住房数据集。有关数据的详细信息,请参见纽约市开放数据.
负载NYCHousing2015rng (1)%用于再现性n = size(NYCHousing2015,1);Shuffidx = randsample(n,n);NYCHousing2015 = NYCHousing2015(shuffidx,:);
提取响应变量SALEPRICE从桌子上。将日志转换应用于SALEPRICE.
SALEPRICE
Y = log(NYCHousing2015。售价+ 1);添加1以避免log为0NYCHousing2015。售价= [];
从分类预测器创建虚拟变量矩阵。
Catvars = [“区”“BUILDINGCLASSCATEGORY”“社区”];dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...“数据源”, catvars);Dumvarmat = table2array(dumvarstbl);NYCHousing2015(:,catvars) = [];
将表中所有其他数值变量视为销售价格的线性预测因子。将虚拟变量矩阵连接到其余的预测器数据,并将数据转置以加快计算速度。
idxnum = varfun(@isnumeric,NYCHousing2015,“OutputFormat”,“统一”);X = [dumvarmat NYCHousing2015{:,idxnum}]';
为增量学习配置一个线性回归模型,没有估计周期。
Mdl =增量回归线性(“学习者”,“leastsquares”,“EstimationPeriod”, 0);
Mdl是一个incrementalRegressionLinear模型对象。
incrementalRegressionLinear
执行增量学习和预测,每次迭代都遵循以下步骤:
通过一次处理100个观测数据块来模拟数据流。
使模型适合传入的数据块。指定观察值沿数据列方向排列。用新模型覆盖以前的增量模型。
使用拟合的模型和传入的数据块预测响应。指定观察值沿数据列方向排列。
%预先配置numObsPerChunk = 100;n =数字(Y);nchunk = floor(n/numObsPerChunk);R = nan(n,1);图h =图(r);h.YDataSource =“r”;ylabel (“残差”)包含(“迭代”)%增量拟合为j = 2:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;Mdl = fit(Mdl,X(:,idx),Y(idx),“ObservationsIn”,“列”);yhat = predict(Mdl,X(:,idx),“ObservationsIn”,“列”);r(idx) = Y(idx) - yhat;refreshdata drawnow结束
Mdl是一个incrementalRegressionLinear在流中的所有数据上训练的模型对象。
残差在整个增量学习过程中对称地分布在0附近。
要计算后验类概率,请指定逻辑回归增量学习器。
加载人类活动数据集。随机打乱数据。
负载humanactivityN = numel(actid);rng (10);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);
Y = Y > 2;
为二元分类创建增量逻辑回归模型。准备好预测通过指定类名和任意系数和偏置值。
预测
p = size(X,2);Beta = randn(p,1);偏差= randn(1);Mdl =增量分类线性(“学习者”,“物流”,“β”,β,...“偏见”偏见,“类名”,独特的(Y));
Mdl是一个incrementalClassificationLinear模型。它的所有属性都是只读的。而不是指定任意的值,你可以采取以下任何一种操作来准备模型:
训练用于二元分类的逻辑回归模型fitclinear在数据的子集上(如果可用),然后通过使用将模型转换为增量学习器incrementalLearner.
逐步适应Mdl通过使用适合.
适合
模拟一个数据流,并对每个传入的50个观测数据块执行以下操作。
调用预测预测输入数据块中观测值的分类分数。分类分数是逻辑回归学习者的后验类概率。
调用perfcurve使用输入的数据块计算ROC曲线下的面积(AUC),并存储结果。
perfcurve
调用适合使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测的新模型。
numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);Auc = 0 (nchunk,1);%增量学习为j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;[~,posteriorProb] = predict(Mdl,X(idx,:));[~, ~, ~, auc (j)] = perfcurve (Y (idx) posteriorProb (:, 2), Mdl.ClassNames (2));Mdl = fit(Mdl,X(idx,:),Y(idx));结束
Mdl是一个incrementalClassificationLinear在流中的所有数据上训练的模型对象。
在输入的数据块上绘制AUC。
情节(auc) ylabel (“AUC”)包含(“迭代”)
AUC表明分类器可以很好地正确预测移动的主题。
增量学习模型,指定为incrementalClassificationLinear或incrementalRegressionLinear模型对象。你可以创建Mdl直接或通过转换支持的,传统训练的机器学习模型使用万博1manbetxincrementalLearner函数。更多详细信息,请参见相应的参考页面。
您必须配置Mdl为一批观察结果预测标签。
如果Mdl是一个转换的,传统训练的模型,你可以预测标签没有任何修改。
否则,Mdl必须满足以下条件,你可以直接指定或拟合Mdl到数据使用适合或updateMetricsAndFit.
updateMetricsAndFit
如果Mdl是一个incrementalRegressionLinear它的模型系数Mdl。β和偏见Mdl。偏见必须为非空数组。
Mdl。β
Mdl。偏见
如果Mdl是一个incrementalClassificationLinear它的模型系数Mdl。β和偏见Mdl。偏见必须为非空数组和类名Mdl。一会必须包含两个类。
Mdl。一会
无论对象类型如何,如果配置模型使函数标准化预测器数据,那么预测器意味着Mdl。μ还有标准差Mdl。σ必须为非空数组。
Mdl。μ
Mdl。σ
要为其预测标签的一批预测器数据,指定为的浮点矩阵n观察和Mdl。NumPredictors预测变量。的价值维确定变量和观测值的方向。
Mdl。NumPredictors
观察标签的长度Y观察的次数X必须平等;Y (j)是观察的标签吗j(行或列)在X.
Y
Y (j)
j
请注意
预测万博1manbetx仅支持浮点输入预测器数据。如果输入模型Mdl表示经过转换的、传统训练的适合分类数据的模型dummyvar将每个分类变量转换为虚拟变量的数字矩阵,并将所有虚拟变量矩阵与任何其他数字预测函数连接起来。详情请参见虚拟变量.
dummyvar
数据类型:单|双
单
双
预测器数据观测维数,指定为“列”或“行”.
例子:“ObservationsIn”、“列”
数据类型:字符|字符串
字符
字符串
预测的响应(或标签),作为类别或字符数组返回;浮点、逻辑或字符串向量;或者单元格数组的字符向量n行。n观察的数量在吗X,标签(j)预测的反应是观察吗j.
标签(j)
对于分类问题,标签存储的类名具有相同的数据类型Mdl。一会.(该软件将字符串数组视为字符向量的单元格数组。)
对于回归问题,标签是浮点向量。
分类的分数,作为n-by-2浮点矩阵时Mdl是一个incrementalClassificationLinear模型。n观察的数量在吗X.评分(j,k)这是观察分类的分数吗j成类k.Mdl。一会指定类的顺序。
评分(j,k)
k
如果Mdl。学习者是“支持向量机”,预测返回原始分类分数。如果Mdl。学习者是“物流”,分类分数为后验概率。
Mdl。学习者
“支持向量机”
“物流”
对于线性增量学习模型的二进制分类,原始分类分对观测进行分类x,一个行向量,入正类为
f ( x ) = β 0 + x β ,
在哪里
β0是标量偏置Mdl。偏见.
β是系数的列向量吗Mdl。β.
用于分类的原始分类分数x进入负类的是-f(x).该软件将观察结果分为产生正分的类别。
如果线性分类模型由逻辑回归学习器组成,则该软件应用分对数的分数转换为原始分类分数。
分对数的
使用注意事项和限制:
使用saveLearnerForCoder,loadLearnerForCoder,codegen(MATLAB编码器)方法生成代码预测函数。通过使用保存一个训练好的模型saveLearnerForCoder.定义一个入口点函数,该函数通过loadLearnerForCoder并调用预测函数。然后使用codegen为入口点函数生成代码。
saveLearnerForCoder
loadLearnerForCoder
codegen
要生成用于predict的单精度C/ c++代码,请指定name-value参数“数据类型”、“单”当你打电话给loadLearnerForCoder函数。
“数据类型”、“单”
该表包含关于的参数的注释预测.完全支持不包括在本表中的参数。万博1manbetx
有关模型对象的使用说明和限制,请参见incrementalClassificationLinear或incrementalRegressionLinear.
批对批,观察的数量可以是一个可变的大小。
预测变量的数量必须等于Mdl。NumPredictors.
X必须单或双.
以下限制适用:
如果你配置Mdl打乱数据(Mdl。洗牌是真正的,或Mdl。解算器是“sgd”或“asgd”),预测函数随机洗牌每批传入的观测值,然后再将模型与该批匹配。打乱后的观测顺序可能与MATLAB生成的顺序不匹配®.因此,如果你适合Mdl在生成预测之前,用MATLAB计算的预测值和用生成的代码计算的预测值可能不相等。
Mdl。洗牌
真正的
Mdl。解算器
“sgd”
“asgd”
也可以对所有浮点输入参数和对象属性使用同构数据类型单或双.
有关更多信息,请参见代码生成简介.
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处