99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀基于R語言的分類算法之決策樹
基于R語言的分類算法之決策樹
2018-06-14
收藏

基于R語言的分類算法之決策樹

ID3 《= 最大信息熵增益,只能處理離散型數(shù)據(jù)

C4.5 《= 信息增益率,可處理連續(xù)性和離散型數(shù)據(jù),相比ID3,減少了因變量過多導(dǎo)致的過擬合

C5.0 《= 信息增益率,運算性能比C4.5更強大

CART 《= 基尼指數(shù)最小原則,連續(xù)性和離散型數(shù)據(jù)均可

信息熵體現(xiàn)的是數(shù)據(jù)的雜亂程度,信息越雜亂,信息熵越大,反之越小。 例如:擁有四種連續(xù)型變量特征變量的信息熵一定比擁有三種的要大。

特征變量的N種可能性,每種可能性的概率相同,N越大,信息熵越大。

每種可能性的概率不同,越偏態(tài),信息熵越小。

所有特征變量中,信息增益率的,就是根節(jié)點(root leaf),根節(jié)點一般是選擇N越大的特征變量,因為N越大,信息熵越大。

信息增益率是在信息熵的基礎(chǔ)上作懲罰計算,避免特征變量可能性多導(dǎo)致的高信息增益。

代碼相關(guān)

library(C50)

C5.0(x,y, trials = 1, rules=FALSE,weights=NULL,control=C5.0Control(),costs=NULL)

x為特征變量,y為應(yīng)變量

trials 為迭代次數(shù)(這個值根據(jù)不同數(shù)據(jù)而不同,并非越大越好,一般介于5-15之間,可以用遍歷來尋找最高準(zhǔn)確率的模型,對模型準(zhǔn)確率的提升效果中等)


cost 為損失矩陣,R中應(yīng)該傳入一個矩陣(據(jù)說是對準(zhǔn)確率矩陣約束猜測錯誤的項,但是并沒特別明顯的規(guī)律,可以使用遍歷來尋找最好的cost,準(zhǔn)確率提升效果?。?

costs <- matrix(c(1,2,1,2),
                ncol = 2, byrow = TRUE, 
                dimnames = list(c("yes","no"), c("yes","no")))


control 設(shè)置C5.0模型的其他參數(shù),比如置信水平和節(jié)點最小樣本等(水很深,參數(shù)很多,可以自行查閱R的幫助文檔,我只設(shè)置了一個CF,準(zhǔn)確率提升效果?。?

control = C5.0Control(CF = 0.25)


library(C50)


#對iris隨機劃分訓(xùn)練集和測試集
set.seed(1234)

index <- sample(1:nrow(iris), size = 0.75*nrow(iris))
train <- iris[index,]
test <- iris[-index,]


#查看訓(xùn)練集和測試集分布是否合理

prop.table(table(train$Species))
prop.table(table(test$Species))


#不設(shè)置任何參數(shù)

fit1 <- C5.0(x = train[,1:4], y = train[,5])

pred1 <- predict(fit1, newdata = test[,-5])
freq1 <- table(pred1, test[,5])
accuracy <- sum(diag(freq1))/sum(freq1)

pred1        setosa versicolor virginica
  setosa         16          0         0
  versicolor      0         13         1
  virginica       0          0         8

準(zhǔn)確率為0.9736842,只有一個錯誤。。。顯然150個iris太少了,優(yōu)化都省了。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }