id3与软件测试,ID3算法的实现
##計(jì)算利用信息增益作為分類屬性的ID3算法
x
'd', 'c', 'd', 'a', 'a', 'a', 'b', 'b'), byrow = F,
ncol=3)
#計(jì)算一列數(shù)據(jù)的信息熵
CalculateEntropy1
function(data){
temp
table(data)
temp
temp[temp!=0]
return(-sum(log2(temp/sum(temp))*(temp/sum(temp))))
}
#計(jì)算兩列的信息熵 第二列作為分類目標(biāo)的列
CalculateEntropy2
function(data){
temp
1])
name
names(temp)
entropy
for ( i in name){
temp1
2]
entropy
}
return(sum((temp/sum(temp))*entropy))
}
#信息增益率的分裂度量值
Split_Entropy
return(CalculateEntropy1(data[,
1]))
}
ID3
#分類變量唯一
if(length(unique(data$result)) ==
1){
tmp
sep=""),paste(table(data$result), collapse=":"),
sep=",")
cat(paste(paste(rep(" ", k+2), collapse=""),"分類結(jié)果:",data$result[1],
tmp,"*\n"))
return(0)
}
#設(shè)置節(jié)點(diǎn)最少的值 默認(rèn)設(shè)置為3
if(length(data$result)<5){
max_result
T))[1]
tmp
sep=""),paste(table(data$result), collapse=":"),
sep=",")
cat(paste(paste(rep(" ", k+2), collapse=""),"分類結(jié)果:",max_result,
tmp, "*\n"))
return(0)
}
##沒有變量了 但是分類結(jié)果不是唯一, 選擇次數(shù)最多的一個(gè)
if((length(names(data)) ==
1)){
max_result
T))[1]
tmp
sep=""),paste(table(data$result), collapse=":"),
sep=",")
cat(paste(paste(rep(" ", k+2), collapse=""),"分類結(jié)果:",max_result,
tmp, "*\n"))
return(0)
}
cat("\n")
## 信息熵
entropy
CalculateEntropy1(data$result)
lables
names(data)
lable
temp
entropy1
##開始遍歷 尋找最小熵值的列
for( i in 1:(ncol(data)-1)){
# ? ? 信息增益
# ? ? temp1
ncol(data))])
# ? ? 信息增益率
temp1
ncol(data))])/Split_Entropy(data[,c(i, ncol(data))])
if(temp1
< temp)
{
temp
lable
}
}
# ? ?cat(paste(
paste(rep(" ?", k),
collapse=""),lable,"="))
#cat("[\n") 將已利用的分類變量
nextlables
lables[lables != lable]
for(value in
unlist(unique(data[lable]))){
#
cat(paste(paste(rep(" ?", k+1),
collapse=""), value, "---"))
cat(paste( paste(rep(" ?", k),
collapse=""),lable,"=", value, sep=""))
ID3(subset(data,
data[lable]==value, select = nextlables), k+2)
}
# cat("]")
}
測(cè)試數(shù)據(jù)查看:?
存在的問題:1)如過選取的某一個(gè)分類列時(shí)存在多個(gè)值,則會(huì)簡(jiǎn)單的分裂為多個(gè)子樹,結(jié)果還需優(yōu)化剪枝,剪枝函數(shù)需要添加
2)雖然后信息增益比的計(jì)算,但是不適合用于連續(xù)性值,?只適合于簡(jiǎn)單的離散型變量分類,只能作為簡(jiǎn)單實(shí)現(xiàn)用
參考資料1)http://blog.csdn.net/crystal_tyan/article/details/42130851?
2)http://xy.tuxi.com.cn/167/1677903.html
總結(jié)
以上是生活随笔為你收集整理的id3与软件测试,ID3算法的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 删除计算机插优盘记录,如何彻底清除U盘在
- 下一篇: 贪吃蛇一直显示正在连接服务器,贪吃蛇大作