当我创建一个在节点上使用日期截止的rpart树时,我使用的打印方法 - var comparer = new NumberTextComparer();
var numericSortedListASC = numericList.OrderBy(str => str, comparer);
var stringSortedListASC = stringList.OrderBy(str => str, comparer);
和rpart.plot
- 以科学计数法打印日期,这使得难以解释结果。这是fancyRpartPlot
:
有没有办法打印具有更多可解释日期值的树?这个树图是没有意义的,因为所有这些日期看起来都一样。
这是我创建树和绘制两种方式的代码:
fancyRpartPlot
使用此数据:
library(rpart) ; library(rpart.plot) ; library(rattle)
my_tree <- rpart(a ~ ., data = dat)
rpart.plot(my_tree)
fancyRpartPlot(my_tree)
答案 0 :(得分:3)
从实际的角度来看,也许您只想在数据开始时使用几天:
dat$d <- dat$d-as.POSIXct(as.Date("2012/01/01"))
my_tree <- rpart(a ~ ., data = dat)
rpart.plot(my_tree,branch=1,extra=101,type=1,nn=TRUE)
这可以将数量减少到可管理和有意义的数量(尽管可能没有特定日期那么有意义)。您甚至可能希望将其四舍五入到最近的一天或一周。 (我无法在我的计算机上安装GTK +,因此我无法fancyRpartPlot
。)
答案 1 :(得分:1)
一种可能的方法是使用digits
中的print
选项检查树,并as.POSIXlt
转换为日期:
> print(my_tree,digits=100)
n= 100
node), split, n, deviance, yval
* denotes terminal node
1) root 100 7.0885590 0.5178471
2) d>=1346478795.049611568450927734375 33 1.7406368 0.4136051
4) b>=4.5 23 1.0294497 0.3654257 *
5) b< 4.5 10 0.5350040 0.5244177 *
3) d< 1346478795.049611568450927734375 67 4.8127122 0.5691901
6) d< 1340921905.3460228443145751953125 55 4.1140164 0.5368048
12) c=hi 28 1.8580913 0.4779574
24) d< 1335890083.3241622447967529296875 18 0.7796261 0.3806526 *
25) d>=1335890083.3241622447967529296875 10 0.6012662 0.6531062 *
13) c=lo,med 27 2.0584052 0.5978317
26) d>=1337494347.697483539581298828125 8 0.4785274 0.3843749 *
27) d< 1337494347.697483539581298828125 19 1.0618892 0.6877082 *
7) d>=1340921905.3460228443145751953125 12 0.3766236 0.7176229 *
## Get date on first node
> as.POSIXlt(1346478795.049611568450927734375,origin="1970-01-01")
[1] "2012-08-31 22:53:15 PDT"
我还会检查digits
和rpart.plot
中可用的fancyRpartPlot
选项:
rpart.plot(my_tree,digits=10)
fancyRpartPlot(my_tree, digits=10)
答案 2 :(得分:0)
我不知道具体的时间顺序日期在您的分类中有多重要,但另一种方法是根据特征细分您的日期。换句话说,根据“年”(2012,2013,2014 ......)创建[1.0]的垃圾箱。 “星期几”(星期一,星期二,星期三,星期四,星期五......)为[1,0]。甚至可能将“日月”(1,2,3,4,5 ...... 31)视为[1,0]。这增加了更多类别以进行分类,但它消除了使用完全格式化日期的问题。