python信息熵函数 python 熵值法( 三 )


diclabel[label] += 1
### 计算熵
entropy = 0.0
cnt = len(dataset)
for label in diclabel.keys():
prob = float(1.0 * diclabel[label]/cnt)
entropy -= prob * log(prob,2)
return entropy
def initDataSet():
dataset = [[1,0,"yes"],[1,1,"yes"],[0,1,"yes"],[0,0,"no"],[1,0,"no"]]
label = ["male","female"]
return dataset,label
#### 拆分dataset ,根据指定的过滤选项值,去掉指定的列形成一个新的数据集
def splitDataset(dataset , col, value):
retset = [] ## 拆分后的数据集
for record in dataset:
if record[col] == value :
reducedFeatVec = record[:col]
reducedFeatVec.extend(record[col+1:]) ### 将指定的列剔除
retset.append(reducedFeatVec) ### 将新形成的特征值列表追加到返回的列表中
return retset
### 找出信息熵增益最大的特征值
### 参数:
### dataset : 原始的数据集
def findBestFeature(dataset):
numFeatures = len(dataset[0]) - 1 ### 特征值的个数
baseEntropy = calcEntropy(dataset) ### 计算原始数据集的熵
【python信息熵函数 python 熵值法】baseInfoGain = 0.0 ### 初始信息增益
bestFeature = -1 ### 初始的最优分类特征值索引
### 计算每个特征值的熵
for col in range(numFeatures):
features = [record[col] for record in dataset] ### 提取每一列的特征向量 如此处col= 0,则features = [1,1,0,0]
uniqueFeat = set(features)
curInfoGain = 0 ### 根据每一列进行拆分,所获得的信息增益
for featVal in uniqueFeat:
subDataset = splitDataset(dataset,col,featVal) ### 根据col列的featVal特征值来对数据集进行划分
prob = 1.0 * len(subDataset)/numFeatures ### 计算子特征数据集所占比例
curInfoGain += prob * calcEntropy(subDataset) ### 计算col列的特征值featVal所产生的信息增益
# print "col : " ,col , " featVal : " , featVal , " curInfoGain :" ,curInfoGain ," baseInfoGain : " ,baseInfoGain
print "col : " ,col , " curInfoGain :" ,curInfoGain ," baseInfoGain : " ,baseInfoGain
if curInfoGainbaseInfoGain:
baseInfoGain = curInfoGain
bestFeature = col
return baseInfoGain,bestFeature ### 输出最大的信息增益,以获得该增益的列
dataset,label = initDataSet()
infogain , bestFeature = findBestFeature(dataset)
print "bestInfoGain :" , infogain, " bestFeature:",bestFeature
python中有哪些简单的算法?首先谢谢邀请,
python中有的算法还是比较多的?
python之所以火是因为人工智能的发展,人工智能的发展离不开算法!
感觉有本书比较适合你,不过可惜的是这本书没有电子版,只有纸质的 。
这本书对于算法从基本的入门到实现,循序渐进的介绍,比如里面就涵盖了数学建模的常用算法 。
第 1章 从数学建模到人工智能
1.1 数学建模1.1.1 数学建模与人工智能1.1.2 数学建模中的常见问题1.2 人工智能下的数学1.2.1 统计量1.2.2 矩阵概念及运算1.2.3 概率论与数理统计1.2.4 高等数学——导数、微分、不定积分、定积分
第2章 Python快速入门
2.1 安装Python2.1.1 Python安装步骤2.1.2 IDE的选择2.2 Python基本操作2.2.1 第 一个小程序2.2.2 注释与格式化输出2.2.3 列表、元组、字典2.2.4 条件语句与循环语句2.2.5 break、continue、pass2.3 Python高级操作2.3.1 lambda2.3.2 map2.3.3 filter
第3章 Python科学计算库NumPy
3.1 NumPy简介与安装3.1.1 NumPy简介3.1.2 NumPy安装3.2 基本操作3.2.1 初识NumPy3.2.2 NumPy数组类型3.2.3 NumPy创建数组3.2.4 索引与切片3.2.5 矩阵合并与分割3.2.6 矩阵运算与线性代数3.2.7 NumPy的广播机制3.2.8 NumPy统计函数3.2.9 NumPy排序、搜索3.2.10 NumPy数据的保存

推荐阅读