0

予測子のリストとデータを含む data.frame があります。私がやりたいことは、この予測子を使用して、それらの結果をいくつかの集計関数と組み合わせることです。どうやってやるの?

サンプル データは次のようになります。

予測変数 p1 .. pn のリスト。(私の場合は木)

各予測子は、指定された行の「分類の確率」と「1 - 分類の確率」の 2 つの列を返します。

各予測子から返された「分類の確率」を合計し、合計された「1 - 分類の確率」と比較したいと思います。

サンプルデータ:

library('rpart');
size = 10;
samplesize=100;
mydata=data.frame(age=sample(10:40, samplesize, replace=TRUE), weight=rnorm(samplesize, mean = 60, sd = 20), girth=rnorm(samplesize, mean = 60, sd = 20))
mydata=cbind(mydata, dec=((mydata$weight > 40) | (mydata$girth > 60)))
attributes = colnames(mydata)[1:length(colnames(mydata)) - 1] 


model <- list();
for(i in 1:size) {
  attr = sample(1:length(attributes), sample(1:length(attributes)));
  fmla <- as.formula(paste("dec ~ ", paste(attributes[attr], collapse= "+")));
  tree <- rpart(fmla, data=mydata, method="class", control=model$rc);
  model[[i]] <- tree;
}

model は予測変数のリストで、mydata は実際のデータです。私は今、次のように予測することができます:

predict(model[[1]], mydata)

ここで達成できない主なことは、関数の結果を集計することです。ここで、機能があるさらに単純なケースを示すことができます。

f <- function (x, n) {
  data.frame(first = x + n, second=x * n);
}

first次の呼び出しに対して、結果列の合計と列の値の合計を別々に取得したいと考えてsecondいます (グローバルではなく各行に対して):

f(1:4, 2)
f(1:4, 3)
..
f(1:4, n)
4

1 に答える 1

2

これは、代替案の解決策になる可能性があります。

f <- function (x, n) {
  data.frame(first = x + n, second=x * n);
}

n <- 10

l <- lapply(2:n, f, x = 1:4)

### t(sapply(l, colSums))

Reduce('+', l)
于 2013-03-14T16:26:47.497 に答える