簡體   English   中英

R中基於決策樹的條件執行

[英]Conditional execution in R based on decision tree

我有一個CSV文件,其中包含預測變量,例如血壓(BP),心率(HR),體重,體表面積(BSA),體重指數(BMI),年齡和性別。

對於這些變量,有一種基於決策樹的算法,可將這些患者分為高風險是/否類別。 因此,HIGH_RISK是CSV中的最后一列,當前為空。 現在,即使我可以對單個主題(CSV文件中的單個行)使用該算法來填充HIGH_RISK列,但由於行數太多,因此手動進行操作是不切實際的。

如果它是簡單的加法,減法,乘法等,那么我將在R甚至Excel中完成它。 但是由於該算法涉及分支決策樹,因此我不確定該如何做。 但是我可以肯定,因為R非常強大。 有什么建議么?

決策樹與此類似: http : //www.scielo.br/img/revistas/sa/v70n6/a01fig04.jpg

您可以使用我為您編寫的此輔助函數:

decisionTree <- function(dataframe, lst) {
  if (!is.recursive(lst)) return(lst)
  values <- numeric(nrow(dataframe))
  indices <- eval(parse(text = names(lst)[1]), dataframe)
  values[indices] <- decisionTree(dataframe[indices, ], lst[[1]])
  values[!indices] <- decisionTree(dataframe[!indices, ], lst[[2]])
  values
}

通用格式是將data.frame作為第一個參數傳遞, data.frame表示決策樹的嵌套列表作為第二個參數傳遞,格式如下:

 list("first_variable > 0.3" = 
         list("second_variable > 0.5" = 1,
              "second_variable <= 0.5" = list(
                 "third_variable > 0.3" = 0,
                 1) # naming the negated condition is optional
              ),
      "first_variable <= 0.3" = 0)

iris$foo <- decisionTree(iris, list("Sepal.Length > 5" = list("Petal.Length > 1.3" = 1, 0), 0))
head(iris) # All entries with Sepal.Length > 5 and Petal.Length > 1.3 will contain a 1.
#      Sepal.Length Sepal.Width Petal.Length Petal.Width Species foo
#    1          5.1         3.5          1.4         0.2  setosa   1
#    2          4.9         3.0          1.4         0.2  setosa   0
#    3          4.7         3.2          1.3         0.2  setosa   0
#    4          4.6         3.1          1.5         0.2  setosa   0
#    5          5.0         3.6          1.4         0.2  setosa   0
#    6          5.4         3.9          1.7         0.4  setosa   1

對於您提供的圖形,第二個參數如下所示:

list("Ts_Armpit > 35.1" = 1,
  list("Ts_Breast <= 0.39" = list("Ts_Croup <= 28.9" = 1, 0),
    list("Ts_Groin <= 35.1" = 1, list("Ts_Armpit <= 33.7" = 1, 0))))

其中1表示不適, 0表示舒適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM