如何在SAS中使用多分类变量构建HPSPLIT决策树分类模型
错误原因说明
- 第一个报错是因为所有作为自变量的字符型分类变量都必须提前在
CLASS语句中声明,你原来的代码仅在CLASS语句中声明了因变量class,MODEL语句中自变量里的字符型变量未声明,导致运行报错。 - 第二个提示是因为未配置缺失值处理规则,默认会删掉所有包含自变量缺失值的观测,你数据里
node_caps的?属于缺失值,符合这个场景。
修正后代码
proc hpsplit data=bcancer seed=1 assignmissing=branch; /* 把所有分类变量(包括因变量、所有字符型自变量)都放入CLASS语句 */ class class Age Menopause tumor_size inv_nodes node_caps deg_malig breast breast_quad irradiat; model class = Age Menopause tumor_size inv_nodes node_caps deg_malig breast breast_quad irradiat; grow entropy; prune costcomplexity; run;
代码调整说明
- 在
PROC HPSPLIT语句中添加了assignmissing=branch配置:该配置会将分类变量的缺失值自动划分到能让节点增益最大的分支中,无需提前手动删除/填充缺失值,也不会默认丢弃含缺失值的观测。 - 补全了
CLASS语句的变量列表:把所有分类属性的变量全部纳入CLASS声明,如果你确认deg_malig、inv_nodes是数值型连续变量,可以自行从CLASS语句中移除,其余分组类的字符变量必须保留。
内容的提问来源于stack exchange,提问作者bgreedy
相关产品推荐
相关产品推荐

