在过去的几年里,我使用sklearn进行机器学习建模,并逐渐习惯于一个看起来非常合乎逻辑且具有凝聚力的框架:
from sklearn.ensemble import RandomForestClassifier
# define a model
clf = RandomForestClassifier()
# fit the model to data
clf.fit(X,y)
#make prediction on a test set
preds = clf.predict_proba(X_test)[:,1]
我现在正在尝试学习一些R,并希望开始做一些我在sklearn做的事情。您注意到来自sklearn世界的第一件事是跨包的不同语法。这是可以理解的,但有点不方便。 插入符号似乎是解决该问题的一个很好的解决方案,可以在所有不同的R包中创建内聚(即randomForest,gbm,...)。 虽然我仍然对一些默认选择感到困惑(即train()方法似乎默认为某种网格搜索)。另外,插入符号似乎在幕后使用plyr,这会混淆一些dplyr方法,如总结。由于我使用dplyr进行大量数据操作,这是一个问题。 你能帮我弄清楚插入符号相当于sklearn的model / fit / predict_proba是什么吗?还有,有办法处理plyr / dplyr问题吗?
答案 0 :(得分:2)
在caret
库中进行预测相当于更改?predict.train
中的类型。它应该改为:
predict(model, data, type="prob")
如果你想混合dplyr / plyr,那么最简单的方法是使用:
显式调用它dplyr::summarise
或
plyr::summarise
如果您已经尝试使用predict(..., type="prob")
并提出一个您不理解并放弃的奇怪错误,我建议您阅读以下帖子:Predicting Probabilities for GBM with caret library