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

熱線電話:13121318867

登錄
首頁精彩閱讀使用R完成決策樹分類
使用R完成決策樹分類
2018-06-13
收藏

使用R完成決策樹分類

傳統(tǒng)的ID3和C4.5一般用于分類問題,其中ID3使用信息增益進行特征選擇,即遞歸的選擇分類能力最強的特征對數(shù)據(jù)進行分割,C4.5唯一不同的是使用信息增益比進行特征選擇。
特征A對訓練數(shù)據(jù)D的信息增益g(D, A) = 集合D的經(jīng)驗熵H(D) - 特征A給定情況下D的經(jīng)驗條件熵H(D|A)
特征A對訓練數(shù)據(jù)D的信息增益比r(D, A) = g(D, A) / H(D)
而CART(分類與回歸)模型既可以用于分類、也可以用于回歸,對于回歸樹(最小二乘回歸樹生成算法),需要尋找最優(yōu)切分變量和最優(yōu)切分點,對于分類樹(CART生成算法),使用基尼指數(shù)選擇最優(yōu)特征。
一個使用rpart完成決策樹分類的例子如下:
[plain] view plain copy
    library(rpart);  
      
    ## rpart.control對樹進行一些設置  
    ## xval是10折交叉驗證  
    ## minsplit是最小分支節(jié)點數(shù),這里指大于等于20,那么該節(jié)點會繼續(xù)分劃下去,否則停止  
    ## minbucket:葉子節(jié)點最小樣本數(shù)  
    ## maxdepth:樹的深度  
    ## cp全稱為complexity parameter,指某個點的復雜度,對每一步拆分,模型的擬合優(yōu)度必須提高的程度  
    ct <- rpart.control(xval=10, minsplit=20, cp=0.1)  
      
    ## kyphosis是rpart這個包自帶的數(shù)據(jù)集  
    ## na.action:缺失數(shù)據(jù)的處理辦法,默認為刪除因變量缺失的觀測而保留自變量缺失的觀測。           
    ## method:樹的末端數(shù)據(jù)類型選擇相應的變量分割方法:  
    ## 連續(xù)性method=“anova”,離散型method=“class”,計數(shù)型method=“poisson”,生存分析型method=“exp”  
    ## parms用來設置三個參數(shù):先驗概率、損失矩陣、分類純度的度量方法(gini和information)  
    ## cost我覺得是損失矩陣,在剪枝的時候,葉子節(jié)點的加權誤差與父節(jié)點的誤差進行比較,考慮損失矩陣的時候,從將“減少-誤差”調(diào)整為“減少-損失”  
    fit <- rpart(Kyphosis~Age + Number + Start,  
        data=kyphosis, method="class",control=ct,  
        parms = list(prior = c(0.65,0.35), split = "information"));  
      
    ## 第一種  
    par(mfrow=c(1,3));  
    plot(fit);  
    text(fit,use.n=T,all=T,cex=0.9);  
      
    ## 第二種,這種會更漂亮一些  
    library(rpart.plot);  
    rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,  
               shadow.col="gray", box.col="green",  
               border.col="blue", split.col="red",  
               split.cex=1.2, main="Kyphosis決策樹");  
      
    ## rpart包提供了復雜度損失修剪的修剪方法,printcp會告訴分裂到每一層,cp是多少,平均相對誤差是多少  
    ## 交叉驗證的估計誤差(“xerror”列),以及標準誤差(“xstd”列),平均相對誤差=xerror±xstd  
    printcp(fit);  
      
    ## 通過上面的分析來確定cp的值  
    ## 我們可以用下面的辦法選擇具有最小xerror的cp的辦法:  
    ## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])  
      
    fit2 <- prune(fit, cp=0.01);  
    rpart.plot(fit2, branch=1, branch.type=2, type=1, extra=102,  
               shadow.col="gray", box.col="green",  
               border.col="blue", split.col="red",  
               split.cex=1.2, main="Kyphosis決策樹");  

效果圖如下:

數(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)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 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); }