我有以下决策树(由JWEKA包创建 - 由命令private String getDateString() {
Calendar cal = Calendar.getInstance();
DateFormat dfm = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
dfm.setTimeZone(TimeZone.getTimeZone("UTC")); //server timezone
return dfm.format(cal.getTime());
}
创建):
J48(NSP~., data=training)
我想以2种格式提取节点的值: 一种格式只有属性的名称,如:MSTV,MLTV,DP ...等, 所以树的每个级别都会跟随他的父级,在上面的例子中我想得到'('作为每个级别之间的分隔符,如:
[[1]]
J48 pruned tree
------------------
MSTV <= 0.4
| MLTV <= 4.1: 3 -2
| MLTV > 4.1
| | ASTV <= 79
| | | b <= 1383:00:00 2 -18
| | | b > 1383
| | | | UC <= 05:00 1 -2
| | | | UC > 05:00 2 -2
| | ASTV > 79:00:00 3 -2
MSTV > 0.4
| DP <= 0
| | ALTV <= 09:00 1 (170.0/2.0)
| | ALTV > 9
| | | FM <= 7
| | | | LBE <= 142:00:00 1 (27.0/1.0)
| | | | LBE > 142
| | | | | AC <= 2
| | | | | | e <= 1058:00:00 1 -5
| | | | | | e > 1058
| | | | | | | DL <= 04:00 2 (9.0/1.0)
| | | | | | | DL > 04:00 1 -2
| | | | | AC > 02:00 1 -3
| | | FM > 07:00 2 -2
| DP > 0
| | DP <= 1
| | | UC <= 03:00 2 (4.0/1.0)
| | | UC > 3
| | | | MLTV <= 0.4: 3 -2
| | | | MLTV > 0.4: 1 -8
| | DP > 01:00 3 -8
Number of Leaves : 16
Size of the tree : 31
在第二种格式中,我希望获得带有值的节点,如:
(MSTV (MLTV...) (DP...) )
如何提取相关信息。我想要在节点值之间分开,我们应该使用(MSTV 0.4 (MLTV 4.1 ....) (DP 0..... ) )
来分隔字符
但我们需要忽略最后几行。
非常感谢你的帮助。