如何从决策树中获取规则?
MartinLiebig
管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3362年RM数据科学家
问题
决策树以其可理解性而闻名。我如何以更方便的形式获得决策树提供的规则?
回答
要将决策树转换为规则,可以使用树到规则操作符。树到规则操作符是一个嵌套操作符,这意味着您可以将决策树放入其中。
决策树被解析成更容易理解的规则格式
这个规则模型可以用下面的Groovy脚本解析成一个示例集。Groovy脚本需要在Execute script操作符中使用。附上一个示例作为一个过程。
进口com.rapidminer.operator.learner.rules.RuleModel;
进口com.rapidminer.tools.Ontology;
进口com.rapidminer.tools.LogService;
进口com.rapidminer.operator.learner.rules.Rule;
进口java.util.logging.Level
RuleModel = input[0]
numberOfAttributes = 4;
Attribute[] attributes= new Attribute[numberOfAttributes];
attributes[0] = AttributeFactory。createAttribute("完整规则",Ontology.STRING);
attributes[1] = AttributeFactory。createAttribute(“标签”,Ontology.STRING);
attributes[2] = AttributeFactory。createAttribute("此规则涵盖的正确示例",Ontology.STRING);
attributes[3] = AttributeFactory。createAttribute("包含错误示例的规则",Ontology.STRING);
MemoryExampleTable表= new MemoryExampleTable(attributes);
ROW_FACTORY = new DataRowFactory(0);
String[] myvalues = new String[numberOfAttributes]
for(Rule currentRule: rulemodel . getrrules ()){
Int correct = 0;
Int error = 0;
int label = ruleModel.getLabel().getMapping().getIndex(currentRule.getLabel());
LogService.root.log(水平。信息,currentRule.toString ())
int[] frequency = currentRule.getFrequencies();
If(频率!= null) {
For (int I = 0;I < frequency .length;我+ +){
If (i == label) {
正确的+=频率[i];
} else {
错误+=频率[i];
}
}
myvalues[0] = currentRule.toString()
myvalues[1] = currentRule.getLabel()
myvalues[2] = String.valueOf(正确);
myvalues[3] = String.valueOf(错误);
DataRow row = ROW_FACTORY。创建(括号、属性)
table.addDataRow(行);
}
}
返回table.createExampleSet ();
结果如下图所示:
- RapidMin乐鱼平台进入er数据科学服务主管
德国多特蒙德
德国多特蒙德
标记:
4
评论
如何使用支持向量机进行预测?我是新来的。
嗨@fatinharun94查看我们的教程过程随RapidMiner Studio而来。
http://docs.www.turtlecreekpls.com/studio/operators/modeling/predictive/support_vector_machines/support_vector_machine.html
谢谢你的链接。我刚刚得到了答案。
这就是我从链接中理解的。这是正确的吗?