數據分箱、分組

 

  • 下列狀況下經常使用到分箱

a、某些數值自變量在測量時存在隨機偏差,須要對數值進行平滑以消除噪音算法

b、有些數值自變量有大量不重複的取值,對於使用 <、>、=等基本操做符的算法(如決策樹)而言,若是能減小這些不重複取值的個數,就能提升算法的速度函數

c、有些算法只能使用分類自變量,須要把數值變量離散化spa

 

數據內被概括入幾個分箱後,能夠用每一個分箱內數值的均值、中位數或邊界值替代分箱內各觀測的數值,也能夠把每一個分箱做爲離散化後的一個類別。code

例如,對象

某個自變量的觀測值爲1,2.1,2.5,3.4,4,5.6,7,7.4,8.2.it

假設將它們分爲三個分箱,(1,2.1,2.5),(3.4,4,5.6),(7,7.4,8.2),變量

那麼使用分箱均值替代後所得值爲(1.87,1.87,1.87),(4.33,4.33,4.33),(7.53,7.53,7.53),im

使用分箱中位數替代後所得值爲(2.1,2.1,2.1),(4,4,4),(7.4,7.4,7.4),數據

使用邊界值替代後所得值爲(1,2.5,2.5),(3.4,3.4,5.6),(7,7,8.2)(每一個觀測值由其所屬分箱的兩個邊界值中較近的值替代)img

 

分箱法分爲等深分箱(樣本量一致,比等寬好)、等寬分箱(cut函數直接能夠獲取)

 

  • cut函數

能夠很方便的將一個連續型變量切割成很小的片斷。下面是cut函數的默認形式,用於處理數值向量。該方式實現等寬分箱

#數值形式
cut(x,breaks,labels= NULL,
   include.lowers = F, right = TURE,dig.lab = 3,
   ordered_result = F,...)

x:數值向量(用於轉換成一個因子)

breaks:指定分割點數量的整數,或者指定分割點位置的向量

labels:輸出因子的水平的標籤,默認問:null

include.lowest:邏輯值、當right = T時,代表區間左邊的臨界點是否應該被包含在區間內;當 right=F時,區間右邊的臨界點是否應該被包含在區間內,默認爲F

rigth:邏輯值,代表區間是否應該是左開右閉的(當right=F,區間左閉右開),默認是T

dig.lab:當產生一個標籤時,標籤的有效位數(當標籤未被顯式指定時),默認是3

ordered_results:一個邏輯值,代表返回值是否應該被轉換成有序因子,默認是FINS

 

cut函數還能夠用來操縱R中的Date對象:

#日期形式
cut(x,breaks,labels=NULL,start.on.monday=T,right=F,...)

cut函數的輸入是一個數值向量, 輸出是一個因子。因子的每一個水平對應輸入向量的每一個區間範圍

相關文章
相關標籤/搜索