常用的離散化方法有等寬法、 等頻法和(一維) 聚類。
(1) 等寬法
該法將屬性的值域分成具有相同寬度的區(qū)間, 區(qū)間的個數(shù)由數(shù)據(jù)本身的
特點決定, 或者由用戶指定, 類似于制作頻率分布表。
(2) 等頻法
該法將相同數(shù)量的記錄放進每個區(qū)間。
這兩種方法簡單, 易于操作, 但都需要人為地規(guī)定劃分區(qū)間的個數(shù)。 同
時, 等寬法的缺點在于它對離群點比較敏感, 傾向于不均勻地把屬性值分布
到各個區(qū)間。 有些區(qū)間包含許多數(shù)據(jù), 而另外一些區(qū)間的數(shù)據(jù)極少, 這樣會
嚴重損壞建立的決策模型。 等頻法雖然避免了上述問題的產(chǎn)生, 卻可能將相
同的數(shù)據(jù)值分到不同的區(qū)間以滿足每個區(qū)間中固定的數(shù)據(jù)個數(shù)。
(3) (一維) 聚類
(一維) 聚類的方法包括兩個步驟, 首先將連續(xù)屬性的值用聚類算法
(如K-Means算法) 進行聚類, 然后再將聚類得到的簇進行處理, 合并到一
個簇的連續(xù)屬性值并做同一標記。 聚類分析的離散化方法也需要用戶指定簇
的個數(shù), 從而決定產(chǎn)生的區(qū)間數(shù)。
##設(shè)置工作空間
#把“數(shù)據(jù)及程序” 文件夾復(fù)制到F盤下, 再用setwd設(shè)置工作空間
setwd("F: /數(shù)據(jù)及程序/chapter4/示例程序")
#讀取數(shù)據(jù)文件, 提取標題行data=read.csv('./data/discretization_data.csv', header=T)
#等寬離散化
v1=ceiling(data[, 1] *10)
#等頻離散化
names(data) ='f'#變量重命名
attach(data)
seq(0, length(f) , length(f) /6) #等頻劃分為6組
v=sort(f) #按大小排序作為離散化依據(jù)
v2=rep(0, 930) #定義新變量
for(i in 1: 930) v2[i] =ifelse(f[i] <=v[155] , 1,
ifelse(f[i] <=v[310] , 2,
ifelse(f[i] <=v[465] , 3,
ifelse(f[i] <=v[620] , 4,
ifelse(f[i] <=v[775] , 5, 6) ) ) ) )
detach(data)
#聚類離散化
result=kmeans(data, 6)
v3=result$cluster
#圖示結(jié)果
plot(data[, 1] , v1, xlab='肝氣郁結(jié)證型系數(shù)')
plot(data[, 1] , v2, xlab='肝氣郁結(jié)證型系數(shù)')
plot(data[, 1] , v3, xlab='肝氣郁結(jié)證型系數(shù)')








暫無數(shù)據(jù)