#loadData
loadData <- function(){
dataSet = matrix(c(1,1,0,"yes",1,1,1,"yes",1,0,1,"no",0,1,0,"no",0,1,1,"no"),byrow = T, nrow =5)
colnames(dataSet) = c("a","b","c","labels")
return (dataSet)
}
#computing ShannonEnt 实现香农熵
calShannonEnt <- function(dataSet){
numEntries = nrow(dataSet)
labels = levels(factor(dataSet[,"labels"]))
labelCount = NULL
labelCount[labels] = rep(0,length(labels))
for(i in 1:numEntries){
if(dataSet[i,"labels"] %in% labels){
temp = dataSet[i,"labels"]
labelCount[temp] = labelCount[temp] + 1
}
}
t = NULL
shannonEnt = 0
for(i in 1:length(labelCount)){
t[i]= labelCount[i]*1.0 / numEntries
shannonEnt = -t[i]*log2(t[i]) + shannonEnt
}
# labelCount = as.numeric(labelCount)
return (shannonEnt)
}
#划分数据集 split DataSet
splitDataSet <- function(dataSet,axis,value){
retDataSet = NULL
for(i in 1:nrow(dataSet)){
if(dataSet[i,axis] == value){
tempDataSet = dataSe