这是一场充满挑战但又安静有趣的冲突...... 我希望我能真的做到这一点,希望有人可以帮助我在这里
这是" R"
这是我正在运行的代码,用于从训练中获得X1的R平方
model=randomForest(X1~.,data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-1])
actual=testing$X1
rsq=1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
print(rsq)
这是培训主管,让您知道它的样子
head(training)
X1 X2 X3 X4 X5 X6
68 -3.556526 4.588409 -2.756521 -2.742035 11.542023 -18.405807
23 -1.915947 -0.179710 -0.240580 -0.278259 -0.284058 0.553627
129 -24.252174 -4.869564 4.800001 -14.608688 5.255074 -20.228981
5 -1.637680 -1.147827 -2.005795 -1.121750 0.101440 -1.608688
147 -68.289856 -0.626083 19.933334 -6.637680 15.379715 -11.515945
最多有X77其中一个,其中行数为73.
我的目标是制作一个循环
model=randomForest(X1~.,data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-1])
actual=testing$X1
rsq=1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
print(rsq)
最高为X77
所以
model=randomForest(X77~.,data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-77])
actual=testing$X77
rsq=1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
print(rsq)
所以我可以达到77平方英尺
我的最终目标只是采取那些77 r平方的意思
到Maxim.K和其他人
rsq=function(i){
model=randomForest(testing[,1]~.,data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-i])
actual=testing[,i]
1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
}
rsq=function(i){
model=randomForest(Xi~.,data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-i])
actual=testing[,i]
1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
}
我知道第二个逻辑上没有意义,但这就是我需要的。 因此测试$ X1正在测试[,1],但它不会进行测试[,1] 我必须把它放在" X1"
的形式我该怎么做......?
答案 0 :(得分:2)
我认为Maxim.K已经提到了这一点,但这样的事情会起作用
rsq = function(i) {
n = colnames(testing)[i]
model=randomForest(as.formula(paste(n,"~.")),data=training,importance=TRUE,keep.forest=TRUE)
predicted=predict(model,newdata=testing[,-i])
actual=testing[[n]]
1-sum((actual-predicted)^2)/sum((actual-mean(actual))^2)
}
sapply(1:77, rsq)