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

熱線電話:13121318867

登錄
首頁精彩閱讀決策樹也可以做特征分析啦
決策樹也可以做特征分析啦
2018-08-21
收藏

決策樹也可以做特征分析啦

那么這個代碼是用于建模初期,你為了大概了解變量的一個基本特征寫的,不是最優(yōu)分組哈,因為這個代碼是將變量最多分為12組,分這么多組的原因也是為了更好的觀察特征而已啦,你要是覺得太多組,你可以改下樹的深度這些調整一下,這里關于變量特征怎么看,我就不說了.....

%macro

zhandapao(data,DVAR,id,dir);

proc datasets lib=work nodetails;

delete

varname_total;

run;

/*建立數值型數據集*/

%let lib=%upcase(%scan(&data.,1,'.'));

%letdname=%upcase(%scan(&data.,2,'.'));

%globalvar_list var_num;

proc sql noprint;

select name,count(*) into :var_list separated by' ',:var_num

from sashelp.VCOLUMN

where left(libname)="&lib."and

left(memname)="&dname."and

type="num"and

lowcase(name)^=lowcase("&DVAR.")

and lowcase(name)^="&id.";

quit;

%put

&var_list.;

/*把數值型變量定義為宏變量*/

%doi=1%to&var_num.;

%letnumvar_name_&i.=%scan(&var_list.,&i.);

%put&numvar_name_1.;

proc split data=&data.splitsize=300

maxbranch=2

MAXDEPTH=5nsurrs=5

assess=lift criterion=gini;

input &&numvar_name_&i./level=interval;

target &DVAR./level=binary;

Score data=&data.out=d_&&numvar_name_&i.;

code file="&dir.treecode_tic_&&numvar_name_&i..sas";

describe file="&dir.treerule_tic_&&numvar_name_&i..txt";

run;

data n_D_&&numvar_name_&i.;

set d_&&numvar_name_&i.;

%include"&dir.treecode_tic_&&numvar_name_&i..sas";

rename p_&DVAR.1=p_&&numvar_name_&i.;

run;

proc sql noprint;

select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total, :max ,:min from n_D_&&numvar_name_&i.;

quit;

data n_D_&&numvar_name_&i.;

set n_D_&&numvar_name_&i.;

if &min.<=&&numvar_name_&i.<=&max.

then flag="no_null";

else flag="null";

run;

proc sql;

select count(*) into:is_null from

n_D_&&numvar_name_&i.;

quit;

%if&is_null.>0%then%do;

proc sql noprint;

select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total,:max ,:min from n_D_&&numvar_name_&i.;

create table total as

select"&&numvar_name_&i."as

varname,

min(&&numvar_name_&i.) as interval_1,

max(&&numvar_name_&i.) as interval_2,

compress(put(min(round(&&numvar_name_&i.,0.0001)),best32.))||'-'||compress(put(max(round(&&numvar_name_&i.,0.0001)),best32.)) as interval,

sum(&DVAR.) as bad_num,

count(*) as total_num,

count(*)/&total.as num_rate,

sum(&DVAR.)/count(*) as bad_rate

from n_D_&&numvar_name_&i.

group by p_&&numvar_name_&i.

union all

select"&&numvar_name_&i."as varname,

-9999as interval_1,

-9999as interval_2,

'null'as interval,

sum(&DVAR.) as bad_num,

count(*) as total_num,

count(*)/&total.as num_rate,

sum(&DVAR.)/count(*) as bad_rate

from n_D_&&numvar_name_&i.(where=(&&numvar_name_&i.=.))

group by p_&&numvar_name_&i.

order by interval_1;

quit;

%end;

%else%do;

proc sql noprint;

select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total,:max ,:min from n_D_&&numvar_name_&i.;

create table total as

select"&&numvar_name_&i."as varname,

min(&&numvar_name_&i.) asninterval_1,

max(&&numvar_name_&i.) as interval_2,

compress(put(min(round(&&numvar_name_&i.,0.0001)),best32.))||'-'||compress(put(max(round(&&numvar_name_&i.,0.0001)),best32.)) as interval,

sum(&DVAR.) as bad_num,

count(*) as total_num,

count(*)/&total.as num_rate,

sum(&DVAR.)/count(*) as bad_rate

from n_D_&&numvar_name_&i.

group by p_&&numvar_name_&i.

order by interval_1;

quit;

%end;

data &&numvar_name_&i.;

set total;

group=_n_;

run;

proc append base=varname_total

data=&&numvar_name_&i.

force;run;

proc datasets lib=work nodetails;

delete total n_: d_:

&&numvar_name_&i.

_namedat;

quit;

%end;

%mend;

解釋一下這個代碼怎么用,這個宏已經是封裝好了的,直接填入參數就可以用了:

zhandapao(data,DVAR,id,dir);

data:填入你的數據集

DVAR:填入你的因變量

id:填入你的數據集的主鍵

dir:這個你需要填一個路徑,是用來放決策樹的規(guī)則的文件下,決策樹的規(guī)則文件你看不懂沒關系,你填個類似“F/DD”的路徑就可以了。

例子:%zhandapao(DD.TEST_DATA,y,CUSTOMER_id,D:test_1);

結果圖就是這樣子:

那么今天的更新就到這里啦

數據分析咨詢請掃描二維碼

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

數據分析師資訊
更多

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(), // 加隨機數防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數1:配置參數 // 參數2:回調,回調的第一個參數驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數說明請參見: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); }