R里面機(jī)器學(xué)習(xí)的模型分布在各個(gè)包里面,在使用的過(guò)程中肯能會(huì)有覺(jué)得不方便的時(shí)候,像python的sklearn模塊有各種機(jī)器學(xué)習(xí)模型,集中在一起。
在R里面有兩個(gè)專門做機(jī)器學(xué)習(xí)的包,一個(gè)是caret,一個(gè)是mlr,這里介紹mlr
mlr
1.數(shù)據(jù)預(yù)處理 :
- 創(chuàng)建啞變量
createDummyFeatures(obj = ,target = ,method = ) - 數(shù)據(jù)標(biāo)準(zhǔn)化
normalizeFeatures(obj= ,target = ,method = ) method: 1.center 2.scale 3.standardize 4.range
library(mlbench)
data("Soybean")
head(Soybean)
soy <- createDummyFeatures(Soybean,target = "Class")
2.創(chuàng)建一個(gè)任務(wù)
- 創(chuàng)建一個(gè)分類任務(wù)
makeClassifTask(data=,target=) - 創(chuàng)建一個(gè)回歸任務(wù)
makeRegerTask(data=,taget=) - 創(chuàng)建一個(gè)多分類任務(wù)
makeMultilabelTask(data,taget=) - 創(chuàng)建一個(gè)聚類任務(wù)
makeClusterTask(data=,taget=)
3.創(chuàng)建一個(gè)學(xué)習(xí)器
這里就是指定你要訓(xùn)練什么模型,怎么訓(xùn)練
makeLearner(cl=,predict.type=)
cl指的是訓(xùn)練什么模型,常見(jiàn)有 'lassif.xgboost
predict.type指的是是預(yù)測(cè)概率還是直接預(yù)測(cè)標(biāo)簽prob預(yù)測(cè)的就是概率
mlr有超過(guò)70種不同的算法可以使用,使用View(listLearners()) 查看所有的算法
4.訓(xùn)練模型
設(shè)置超參數(shù) setParamSet(learner=)
獲取超參數(shù) getParamSet(learner=)
訓(xùn)練模型: train(learner=,task=)
預(yù)測(cè)結(jié)果:predict(object=,task=,newdata=)
衡量模型效果
performance(pred=,measures=)
可以通過(guò) listMeasures() 查看有哪些可以作為評(píng)判的指標(biāo)
> head(listMeasures())
[1] "multilabel.f1" "rsq" "kappa"
[4] "multiclass.brier" "fn" "fp"
混淆矩陣:
calculateConfusionMatrix(pred = )
計(jì)算ROC:
calculateROCMeasures(pred = )
- 抽樣
makeResampleDesc(method = )其中method必須為:
cv,iters=LOO,iters=RepCV,reps=,folds=Subsample,iter=,split=Boosttrap iters=Holdout,split=
介紹一個(gè)簡(jiǎn)單的例子
library(mlr)
library(mlbench)
data("Soybean")
soy <- createDummyFeatures(Soybean, target = "Class")
tsk <- makeClassifTask(data = soy, target = "Class")
ho <- makeResampleInstance("Holdout", tsk)
tsk.train <- subsetTask(tsk, ho$train.inds[[1]])
tsk.test <- subsetTask(tsk, ho$test.inds[[1]])
lrn <- makeLearner('classif.xgboost', nrounds = 10)
cv <- makeResampleDesc('CV', iters = 5)
res <- resample(lrn, tsk.train, cv, acc)
ps <-
makeParamSet(
makeNumericParam('eta', 0.1),
makeNumericParam('lambda', 0, 200),
makeIntegerParam('max_depth', 1, 20)
)
tc <- makeTuneControlMBO(budget=100)
tr <- tuneParams(lrn,tsk.train,cv5,acc,ps,tc)
mdl <- train(learner = lrn,task = tsk.train)
prd <- predict(mdl,tsk.test)
calculateConfusionMatrix(prd)
另外,推薦一個(gè)網(wǎng)站:https://rdrr.io/
