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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)分析之美:決策樹R語言實(shí)現(xiàn)
數(shù)據(jù)分析之美:決策樹R語言實(shí)現(xiàn)
2018-01-23
收藏

數(shù)據(jù)分析之美:決策樹R語言實(shí)現(xiàn)

R語言實(shí)現(xiàn)決策樹

1.準(zhǔn)備數(shù)據(jù)
[plain] view plain copy
    > install.packages("tree")  
    > library(tree)  
    > library(ISLR)  
    > attach(Carseats)  
    > High=ifelse(Sales<=8,"No","Yes") //set high values by sales data to calssify  
    > Carseats=data.frame(Carseats,High) //include the high data into the data source  
    > fix(Carseats) 
2.生成決策樹
[plain] view plain copy

    > tree.carseats=tree(High~.-Sales,Carseats)  
    > summary(tree.carseats)  

[plain] view plain copy
    //output training error is 9%  
    Classification tree:  
    tree(formula = High ~ . - Sales, data = Carseats)  
    Variables actually used in tree construction:  
    [1] "ShelveLoc"   "Price"       "Income"      "CompPrice"   "Population"   
    [6] "Advertising" "Age"         "US"           
    Number of terminal nodes:  27   
    Residual mean deviance:  0.4575 = 170.7 / 373   
    Misclassification error rate: 0.09 = 36 / 400  
3. 顯示決策樹
[plain] view plain copy

    > plot(tree . carseats )  
    > text(tree .carseats ,pretty =0) 
4.Test Error

[plain] view plain copy

    //prepare train data and test data  
    //We begin by using the sample() function to split the set of observations sample() into two halves, by selecting a random subset of 200 observations out of the original 400 observations.   
    > set . seed (1)  
    > train=sample(1:nrow(Carseats),200)  
    > Carseats.test=Carseats[-train,]  
    > High.test=High[-train]  
    //get the tree model with train data  
    > tree. carseats =tree (High~.-Sales , Carseats , subset =train )  
    //get the test error with tree model, train data and predict method  
    //predict is a generic function for predictions from the results of various model fitting functions.  
    > tree.pred = predict ( tree.carseats , Carseats .test ,type =" class ")  
    > table ( tree.pred ,High. test)  
    High. test  
    tree. pred No Yes  
    No 86 27  
    Yes 30 57  
    > (86+57) /200  
    [1] 0.715 

5.決策樹剪枝
[plain] view plain copy

    /**  
    Next, we consider whether pruning the tree might lead to improved results. The function cv.tree() performs cross-validation in order to cv.tree() determine the optimal level of tree complexity; cost complexity pruning is used in order to select a sequence of trees for consideration.   
      
    For regression trees, only the default, deviance, is accepted. For classification trees, the default is deviance and the alternative is misclass (number of misclassifications or total loss).  
    We use the argument FUN=prune.misclass in order to indicate that we want the classification error rate to guide the cross-validation and pruning process, rather than the default for the cv.tree() function, which is deviance.   
      
    If the tree is regression tree,   
    > plot(cv. boston$size ,cv. boston$dev ,type=’b ’)  
    */  
    > set . seed (3)  
    > cv. carseats =cv. tree(tree .carseats ,FUN = prune . misclass ,K=10)  
    //The cv.tree() function reports the number of terminal nodes of each tree considered (size) as well as the corresponding error rate(dev) and the value of the cost-complexity parameter used (k, which corresponds to α.  
    > names (cv. carseats )  
    [1] " size" "dev " "k" " method "  
    > cv. carseats  
    $size //the number of terminal nodes of each tree considered  
    [1] 19 17 14 13 9 7 3 2 1  
    $dev  //the corresponding error rate  
    [1] 55 55 53 52 50 56 69 65 80  
    $k  // the value of the cost-complexity parameter used  
    [1] -Inf 0.0000000 0.6666667 1.0000000 1.7500000  
    2.0000000 4.2500000  
    [8] 5.0000000 23.0000000  
    $method   //miscalss for classification tree  
    [1] " misclass "  
    attr (," class ")  
    [1] " prune " "tree. sequence "  

[plain] view plain copy

    //plot the error rate with tree node size to see whcih node size is best  
    > plot(cv. carseats$size ,cv. carseats$dev ,type=’b ’)  
      
    /**  
    Note that, despite the name, dev corresponds to the cross-validation error rate in this instance. The tree with 9 terminal nodes results in the lowest cross-validation error rate, with 50 cross-validation errors. We plot the error rate as a function of both size and k.  
    */  
    > prune . carseats = prune . misclass ( tree. carseats , best =9)  
    > plot( prune . carseats )  
    > text( prune .carseats , pretty =0)  
      
    //get test error again to see whether the this pruned tree perform on the test data set  
    > tree.pred = predict ( prune . carseats , Carseats .test , type =" class ")  
    > table ( tree.pred ,High. test)  
    High. test  
    tree. pred No Yes  
    No 94 24  
    Yes 22 60  
    > (94+60) /200  
    [1] 0.77

數(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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) 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){ //倒計(jì)時完成 $(".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); }