首页 > 代码库 > 【机器学习】决策树-ID3算法的Python实现
【机器学习】决策树-ID3算法的Python实现
''' Created on Jan 30, 2015 @author: 史帅 ''' from math import log import operator import re def fileToDataSet(fileName): ''' 此方法功能是:从文件中读取样本集数据,样本数据的格式为:数据以空白字符分割,最后一列为类标签 参数: fileName:存放样本集数据的文件路径 返回值: dataSet:样本集数据组成的二维数组 ''' file=open(fileName, mode='r') lines=file.readlines() dataSet=[] index=0 p=re.compile(r"\s+") for line in lines: line=p.split(line.strip()) dataSet.append(line) index+=1 return dataSet def calculateShannonEntropy(dataSet): ''' 此方法功能是:计算样本集数据类别的信息熵,样本数据的格式为二维数组 参数: dataSet:样本集数据组成的二维数组 返回值: shannonEntropy:样本集数据类别的信息熵 ''' dataCount=len(dataSet) classCountDic={} for data in dataSet: label=data[-1] if label not in classCountDic.keys(): classCountDic[label]=0 classCountDic[label]+=1 shannonEntropy=0.0 for key in classCountDic: prob=float(classCountDic[key])/dataCount shannonEntropy-=prob*log(prob,2) return shannonEntropy def splitDataSet(dataSet,axis,value): ''' 此方法功能是:对样本集数据按照某一特征进行分割,使得分割后的数据集中该特征的值全部等于同一个值,并且将分割后的数据中该特征列去除 参数: dataSet:待分割的样本集数据,二维数组 axis:特征所在样本集数据列中的位置 value:样本集数据分割后该特征的值 返回值: splitedDataSet:按照所在位置为axis的特征进行分割,并且该特征值为value的样本集数据的子集 ''' splitedDataSet=[] for data in dataSet: if data[axis]==value: splitedData=http://www.mamicode.com/data[:axis]>【机器学习】决策树-ID3算法的Python实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。