Matlab集成袋装树模型绘制PDP提示输入参数不足,求解决方法
解决Matlab集成袋装树模型绘制PDP时的参数缺失错误
问题场景
我在Matlab分类学习器中构建了集成袋装树模型,用于二分类(0/1)预测。数据集包含62条记录、40个变量(拟合时排除2个),多数为分类变量,采用5折交叉验证,模型已导出为trainedModel。尝试用以下代码绘制部分依赖图(PDP)时触发错误:
Mdl = trainedModel.ClassificationEnsemble; pd = plotPartialDependence(Mdl,{'Age','exp_val'}); %age and exp_val are ordinal variables
错误提示:
Error using classreg.learning.classif.FullClassificationModel/plotPartialDependence (line 391) Not enough input arguments.
解决方案
错误核心是plotPartialDependence针对分类模型时,必须显式传入训练数据集(模型需要基于数据计算特征的部分依赖关系),补充参数后即可正常运行。以下是几种可行写法:
1. 传入训练数据集绘制PDP
分类学习器导出的模型通常内置训练数据在trainedModel.X中,直接补充该参数:
Mdl = trainedModel.ClassificationEnsemble; pd = plotPartialDependence(Mdl, trainedModel.X, {'Age','exp_val'});
2. 指定响应类别绘制目标类别的PDP
如果需要针对二分类中的某个类别(比如类别1)绘制PDP,可添加ResponseValue参数:
Mdl = trainedModel.ClassificationEnsemble; pd = plotPartialDependence(Mdl, trainedModel.X, {'Age','exp_val'}, 'ResponseValue', 1);
3. 针对交叉验证模型的处理
若trainedModel是交叉验证模型(类型为ClassificationPartitionedEnsemble),需调用交叉验证模型的方法并传入数据集:
Mdl = trainedModel.CrossValidatedModel; pd = plotPartialDependence(Mdl, trainedModel.X, {'Age','exp_val'});
说明
分类模型的plotPartialDependence方法需要数据集来计算特征与预测结果的边际关系,原代码缺失该必要参数导致报错。确保传入的数据集包含Age和exp_val这两个有序变量且无缺失值,即可正常生成PDP图。
内容的提问来源于stack exchange,提问作者Had
相关产品推荐
相关产品推荐

