Machine Learning With R

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 = )

  1. 抽樣
    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/

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 正文之前 緊接上文: 《Effective Detection of Multimedia Protocol Tu...
    張照博閱讀 777評(píng)論 0 1
  • 假設(shè)你去隨機(jī)問(wèn)很多人一個(gè)很復(fù)雜的問(wèn)題,然后把它們的答案合并起來(lái)。通常情況下你會(huì)發(fā)現(xiàn)這個(gè)合并的答案比一個(gè)專家的答案要...
    城市中迷途小書童閱讀 3,053評(píng)論 0 1
  • 利用caret包的createDataPartition()函數(shù)將數(shù)據(jù)集分為一定比例的訓(xùn)練集和驗(yàn)證集 Create...
    瞌睡齋主人閱讀 691評(píng)論 0 3
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 7,718評(píng)論 0 4
  • 公元:2019年11月28日19時(shí)42分農(nóng)歷:二零一九年 十一月 初三日 戌時(shí)干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 7,419評(píng)論 0 2

友情鏈接更多精彩內(nèi)容