multi tree update
This commit is contained in:
parent
936190c17c
commit
ad2e93f6c5
@ -10,8 +10,8 @@ data(agaricus.train, package='xgboost')
|
||||
#Each column of the sparse Matrix is a feature in one hot encoding format.
|
||||
train <- agaricus.train
|
||||
|
||||
bst <- xgboost(data = train$data, label = train$label, max.depth = 3,
|
||||
eta = 1, nthread = 2, nround = 4,objective = "binary:logistic")
|
||||
bst <- xgboost(data = train$data, label = train$label, max.depth = 2,
|
||||
eta = 1, nthread = 2, nround = 4, objective = "binary:logistic")
|
||||
|
||||
#agaricus.test$data@Dimnames[[2]] represents the column names of the sparse matrix.
|
||||
tree.matrix <- xgb.model.dt.tree(agaricus.train$data@Dimnames[[2]], model = bst)
|
||||
@ -21,9 +21,9 @@ tree.matrix <- xgb.model.dt.tree(agaricus.train$data@Dimnames[[2]], model = bst)
|
||||
|
||||
# root init
|
||||
root.nodes <- tree.matrix[str_detect(ID, "\\d+-0"), ID]
|
||||
tree.matrix[ID == root.nodes, Abs.Position:=root.nodes %>% str_replace("-", "_")]
|
||||
tree.matrix[ID == root.nodes, Abs.Position:=root.nodes]
|
||||
|
||||
precedent.nodes <- root.nodes %>% str_replace("-", "_")
|
||||
precedent.nodes <- root.nodes
|
||||
|
||||
while(tree.matrix[,sum(is.na(Abs.Position))] > 0) {
|
||||
yes.row.nodes <- tree.matrix[Abs.Position %in% precedent.nodes & !is.na(Yes)]
|
||||
@ -40,11 +40,16 @@ tree.matrix[!is.na(Yes),Yes:= paste0(Abs.Position, "_0")]
|
||||
tree.matrix[!is.na(No),No:= paste0(Abs.Position, "_1")]
|
||||
tree.matrix[,ID:= Abs.Position]
|
||||
|
||||
tree.matrix[,Abs.Position:=substr(Abs.Position, nchar(Tree)+2, nchar(Abs.Position))]
|
||||
keepN <- 3
|
||||
tree.matrix <- tree.matrix[,sum(Quality),by = .(Abs.Position, Feature)][order(-V1)][,.(paste0(Feature[1:min(length(Feature), keepN)], " (", V1[1:min(length(V1), keepN)], ")") %>% paste0(collapse = "\n")), by=Abs.Position]
|
||||
|
||||
tree.matrix[Feature!="Leaf" ,yesPath:= paste(ID,"(", Feature, "<br/>Cover: ", Cover, "<br/>Gain: ", Quality, ")-->|< ", Split, "|", Yes, ">", Yes.Feature, "]", sep = "")]
|
||||
|
||||
tree.matrix[Feature!="Leaf" ,noPath:= paste(ID,"(", Feature, ")-->|>= ", Split, "|", No, ">", No.Feature, "]", sep = "")]
|
||||
|
||||
tree.matrix[, Yes:= Abs.Position %>% paste0("_0")][, No:= Abs.Position %>% paste0("_1")]
|
||||
|
||||
CSSstyle <- "classDef greenNode fill:#A2EB86, stroke:#04C4AB, stroke-width:2px\nclassDef redNode fill:#FFA070, stroke:#FF5E5E, stroke-width:2px"
|
||||
|
||||
|
||||
@ -56,4 +61,4 @@ path <- tree.matrix[Feature!="Leaf", c(yesPath, noPath)] %>% .[order(.)] %>% pas
|
||||
DiagrammeR::mermaid(path)
|
||||
|
||||
# path <- "graph LR;0-0-0(spore-print-color=green)-->|>= 2.00001|0-0-0-1>Leaf"
|
||||
setnames(tree.matrix, old = c("ID", "Yes", "No"), c("nodes", "edge_from", "edge_to"))
|
||||
# setnames(tree.matrix, old = c("ID", "Yes", "No"), c("nodes", "edge_from", "edge_to"))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user