1

我认为一个自变量是如此重要和首要,以至于我只想使用它来构建模型并使用其余的其他变量来构建其他模型。

比如在 kaggle.com 上的泰坦尼克号比赛中,sex我把它作为一个主要变量,我用它来构建一个 SVM 模型。然后我使用其他变量(例如fare, alone, )age来构建一个 cforest 模型。

但要预测survival,我需要他们两个。那么我该怎么做呢? lm()功能似乎不适用于S4 class.

我的代码在这里:

## Modeling Begin

predictions <- NULL
NT <- 1000
## formula3 for 'gender' model using SVM
formula3 <- as.factor(survived) ~ pclass + sex
## formula1 and formula2 both for rest features without gender model
formula1.cf <- as.formula(as.factor(survived) ~ pclass  + alone + fare + age)
formula2.cf <- as.formula(          survived  ~ pclass  + alone + fare + age)

## Train SVM(only for gender model) and Predict
library(e1071)
formula3 <- as.factor(survived) ~ pclass + sex
tune <- tune.svm(formula3, data=clean.train, gamma=10^(-4:-1), cost=10^(1:4))
# summary(tune)
tune$best.parameters

model.svm <- svm(formula3, 
               data=clean.train, 
               type="C-classification", 
               kernel="radial", 
               probability=T, 
               gamma=tune$best.parameters$gamma, 
               cost=tune$best.parameters$cost)

## Train cForest
model.cforest <- cforest(formula2.cf, data=clean.train, 
                           control=cforest_unbiased(ntree=NT, trace=F))

谢谢你!

4

1 回答 1

0

我认为现在有一个 combine(...) 函数添加到 R 的randomForest包中,它专门用于组合多个随机树模型。像下面的代码这样简单的东西也可以是一种结合线性和randomForest模型的方法。它就像加权每个模型的影响一样简单。

拟合对数回归和随机森林:

fit.lr = glm(y~x1+x2+x3+x4, family = binomial, data = d)
fit.rf = randomForest(as.factor(y)~x1+x2+x3+x4, data = d, ntree = 100, proximity = FALSE)

在 x1、x2 中创建函数以提供模型预测,同时将 x3、x4 设置为原点

g.lr.sig = function(x, y) predict(fit.lr, data.frame(x1 = x, x2 = y, x3 = 0, x4 = 0), type = "response") <br>
g.rf.sig = function(x, y) predict(fit.rf, data.frame(x1 = x, x2 = y, x3 = 0, x4 = 0), type = "prob")[, 2] <br>
g.en.sig = function(x, y) 0.5*g.lr.sig(x, y) + 0.5*g.rf.sig(x, y)<br>

我希望这会有所帮助。

于 2014-01-21T19:49:16.567 回答