我开始使用R学习ML。我使用RStudio执行以下操作:
iris=datasets::iris
tree(Species~., iris)
我得到:
1) root 150 329.600 setosa ( 0.33333 0.33333 0.33333 )
2) Petal.Length < 2.45 50 0.000 setosa ( 1.00000 0.00000 0.00000 ) *
3) Petal.Length > 2.45 100 138.600 versicolor ( 0.00000 0.50000 0.50000 )
6) Petal.Width < 1.75 54 33.320 versicolor ( 0.00000 0.90741 0.09259 )
12) Petal.Length < 4.95 48 9.721 versicolor ( 0.00000 0.97917 0.02083 )
24) Sepal.Length < 5.15 5 5.004 versicolor ( 0.00000 0.80000 0.20000 ) *
25) Sepal.Length > 5.15 43 0.000 versicolor ( 0.00000 1.00000 0.00000 ) *
13) Petal.Length > 4.95 6 7.638 virginica ( 0.00000 0.33333 0.66667 ) *
7) Petal.Width > 1.75 46 9.635 virginica ( 0.00000 0.02174 0.97826 )
14) Petal.Length < 4.95 6 5.407 virginica ( 0.00000 0.16667 0.83333 ) *
15) Petal.Length > 4.95 40 0.000 virginica ( 0.00000 0.00000 1.00000 ) *
我的问题是:
我使用软件包tree
和datasets
。
谢谢。
答案 0 :(得分:1)
关于第二个问题,您可以这样做:
library(tree)
# build your tree
m = tree(Species~., iris)
# count how many times you have <leaf> in the models dataframe
sum(m$frame$var == "<leaf>")
# [1] 6
# count terminal nodes
length(unique(m$where))
# [1] 6
# count nodes
nrow(m$frame)
# [1] 11
答案 1 :(得分:1)
tree:::tree.depth(as.integer(row.names(iris_tree$frame)))
## [1] 0 1 1 2 3 4 4 3 2 3 3
取max()
的深度(如果不是0索引深度,则取+1),取length()
的#个节点。
以上是程序包内部执行的操作