亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python實現ID3決策樹算法

2020-02-15 22:51:07
字體:
來源:轉載
供稿:網友

ID3決策樹是以信息增益作為決策標準的一種貪心決策樹算法

# -*- coding: utf-8 -*-from numpy import *import mathimport copyimport cPickle as pickleclass ID3DTree(object):  def __init__(self): # 構造方法    self.tree = {} # 生成樹    self.dataSet = [] # 數據集    self.labels = [] # 標簽集  # 數據導入函數  def loadDataSet(self, path, labels):    recordList = []    fp = open(path, "rb") # 讀取文件內容    content = fp.read()    fp.close()    rowList = content.splitlines() # 按行轉換為一維表    recordList = [row.split("/t") for row in rowList if row.strip()] # strip()函數刪除空格、Tab等    self.dataSet = recordList    self.labels = labels  # 執行決策樹函數  def train(self):    labels = copy.deepcopy(self.labels)    self.tree = self.buildTree(self.dataSet, labels)  # 構件決策樹:穿件決策樹主程序  def buildTree(self, dataSet, lables):    cateList = [data[-1] for data in dataSet] # 抽取源數據集中的決策標簽列    # 程序終止條件1:如果classList只有一種決策標簽,停止劃分,返回這個決策標簽    if cateList.count(cateList[0]) == len(cateList):      return cateList[0]    # 程序終止條件2:如果數據集的第一個決策標簽只有一個,返回這個標簽    if len(dataSet[0]) == 1:      return self.maxCate(cateList)    # 核心部分    bestFeat = self.getBestFeat(dataSet) # 返回數據集的最優特征軸    bestFeatLabel = lables[bestFeat]    tree = {bestFeatLabel: {}}    del (lables[bestFeat])    # 抽取最優特征軸的列向量    uniqueVals = set([data[bestFeat] for data in dataSet]) # 去重    for value in uniqueVals: # 決策樹遞歸生長      subLables = lables[:] # 將刪除后的特征類別集建立子類別集      # 按最優特征列和值分隔數據集      splitDataset = self.splitDataSet(dataSet, bestFeat, value)      subTree = self.buildTree(splitDataset, subLables) # 構建子樹      tree[bestFeatLabel][value] = subTree    return tree  # 計算出現次數最多的類別標簽  def maxCate(self, cateList):    items = dict([(cateList.count(i), i) for i in cateList])    return items[max(items.keys())]  # 計算最優特征  def getBestFeat(self, dataSet):    # 計算特征向量維,其中最后一列用于類別標簽    numFeatures = len(dataSet[0]) - 1 # 特征向量維數=行向量維數-1    baseEntropy = self.computeEntropy(dataSet) # 基礎熵    bestInfoGain = 0.0 # 初始化最優的信息增益    bestFeature = -1 # 初始化最優的特征軸    # 外循環:遍歷數據集各列,計算最優特征軸    # i為數據集列索引:取值范圍0~(numFeatures-1)    for i in xrange(numFeatures):      uniqueVals = set([data[i] for data in dataSet]) # 去重      newEntropy = 0.0      for value in uniqueVals:        subDataSet = self.splitDataSet(dataSet, i, value)        prob = len(subDataSet) / float(len(dataSet))        newEntropy += prob * self.computeEntropy(subDataSet)      infoGain = baseEntropy - newEntropy      if (infoGain > bestInfoGain): # 信息增益大于0        bestInfoGain = infoGain # 用當前信息增益值替代之前的最優增益值        bestFeature = i # 重置最優特征為當前列    return bestFeature  # 計算信息熵  # @staticmethod  def computeEntropy(self, dataSet):    dataLen = float(len(dataSet))    cateList = [data[-1] for data in dataSet] # 從數據集中得到類別標簽    # 得到類別為key、 出現次數value的字典    items = dict([(i, cateList.count(i)) for i in cateList])    infoEntropy = 0.0    for key in items: # 香農熵: = -p*log2(p) --infoEntropy = -prob * log(prob, 2)      prob = float(items[key]) / dataLen      infoEntropy -= prob * math.log(prob, 2)    return infoEntropy  # 劃分數據集: 分割數據集; 刪除特征軸所在的數據列,返回剩余的數據集  # dataSet : 數據集; axis: 特征軸; value: 特征軸的取值  def splitDataSet(self, dataSet, axis, value):    rtnList = []    for featVec in dataSet:      if featVec[axis] == value:        rFeatVec = featVec[:axis] # list操作:提取0~(axis-1)的元素        rFeatVec.extend(featVec[axis + 1:])        rtnList.append(rFeatVec)    return rtnList  # 存取樹到文件  def storetree(self, inputTree, filename):    fw = open(filename,'w')    pickle.dump(inputTree, fw)    fw.close()  # 從文件抓取樹  def grabTree(self, filename):    fr = open(filename)    return pickle.load(fr)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频中文字幕| 亚洲91精品在线| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美一区二区三区在线| 国产精品91久久久| 免费97视频在线精品国自产拍| 91美女福利视频高清| 91麻豆国产语对白在线观看| 国产精品旅馆在线| 精品一区二区电影| 亚洲影院色在线观看免费| 亚洲色图18p| 精品亚洲男同gayvideo网站| 国产成人精品午夜| 欧美日韩国产成人高清视频| 国产一区二区三区精品久久久| 欧美激情精品久久久| 国产精品激情自拍| 正在播放国产一区| 国产精品国内视频| 91精品国产高清| 在线电影欧美日韩一区二区私密| 国产日韩综合一区二区性色av| 亚洲缚视频在线观看| 在线播放国产一区中文字幕剧情欧美| 国产欧美一区二区三区在线| 成人午夜高潮视频| 8090理伦午夜在线电影| 国产精品高清在线观看| 成人观看高清在线观看免费| 91在线中文字幕| 91欧美精品午夜性色福利在线| 亚洲网站在线看| 这里只有精品在线观看| 亚洲精品久久久久| 亚洲乱码一区二区| 久久久亚洲福利精品午夜| 成人福利网站在线观看| 中文字幕亚洲欧美日韩2019| 91国产美女视频| 国产欧美日韩精品在线观看| 黑人欧美xxxx| 综合网中文字幕| 欧亚精品中文字幕| 国产一区二区三区网站| 一级做a爰片久久毛片美女图片| 日韩免费在线观看视频| 日本不卡免费高清视频| 亚洲综合自拍一区| 黑人狂躁日本妞一区二区三区| 亚洲精品欧美极品| 欧美精品精品精品精品免费| 久久久久久91香蕉国产| 精品久久久久久久久中文字幕| 亚洲欧美一区二区三区久久| 久久精品99久久久久久久久| 性欧美长视频免费观看不卡| 疯狂做受xxxx高潮欧美日本| 色综合久综合久久综合久鬼88| 精品人伦一区二区三区蜜桃免费| 亚洲欧美国产一区二区三区| 欧美性猛交xxxx免费看| www.欧美三级电影.com| 日韩中文娱乐网| 成人网在线视频| 亚洲第一区中文字幕| 久久综合伊人77777蜜臀| 欧美精品久久一区二区| 亚洲欧美日韩网| 国产成人免费av电影| 久久久久成人网| 久久噜噜噜精品国产亚洲综合| 麻豆国产精品va在线观看不卡| 欧洲永久精品大片ww免费漫画| 法国裸体一区二区| 久久精品一区中文字幕| 91亚洲永久免费精品| 久久久久久久久久亚洲| 成人av.网址在线网站| 日韩欧美中文字幕在线观看| 中文字幕av一区二区三区谷原希美| 97免费中文视频在线观看| 主播福利视频一区| 在线播放日韩专区| 91亚洲精品一区二区| 亚洲第一页中文字幕| 精品免费在线观看| 久久综合九色九九| 国产偷国产偷亚洲清高网站| 91高清视频在线免费观看| 69av成年福利视频| 亚洲天堂av在线免费观看| 国产精品久久久久久久久久免费| 亚洲老司机av| 91精品国产成人| 欧美最顶级丰满的aⅴ艳星| 亚洲天堂av在线免费观看| 欧美成人免费大片| 久久av红桃一区二区小说| 97精品在线视频| 色综合影院在线| 欧美亚洲视频一区二区| 一个人看的www久久| 国产第一区电影| 国产91露脸中文字幕在线| 97视频国产在线| 国产视频精品久久久| 日韩av免费观影| 高清在线视频日韩欧美| 久久激情五月丁香伊人| 国产噜噜噜噜久久久久久久久| 日韩va亚洲va欧洲va国产| 最近2019中文字幕大全第二页| 亚洲人成电影网站色| 国产精品日韩精品| 国产中文日韩欧美| 久久久久久久久久婷婷| 2024亚洲男人天堂| 国产精品极品美女在线观看免费| 色狠狠av一区二区三区香蕉蜜桃| 日韩精品免费在线视频观看| 欧美日韩黄色大片| 国产女精品视频网站免费| 久久97精品久久久久久久不卡| 久久久精品一区二区三区| 欧美激情videoshd| 欧美一区二区三区免费观看| 国产精品91久久| 成人精品久久一区二区三区| 麻豆一区二区在线观看| 亚洲视频在线免费观看| 最好看的2019年中文视频| 亚洲最新av在线网站| 中文字幕日韩视频| 国产精品女视频| 国产精品男人爽免费视频1| 欧美日韩另类视频| 国产亚洲欧美视频| 久久99热精品这里久久精品| 亚洲一区二区三区视频| 欧美大成色www永久网站婷| 5566成人精品视频免费| 欧美一级视频免费在线观看| 久久99亚洲精品| 热草久综合在线| 日韩精品欧美国产精品忘忧草| 久久躁日日躁aaaaxxxx| 国产精品日韩精品| 久久久久久久网站| 欧美xxxwww| 国产精品18久久久久久麻辣| 日韩电影中文字幕在线| 国产一区二区三区直播精品电影| 日韩av在线电影网| 亚洲毛茸茸少妇高潮呻吟| 欧美日韩亚洲一区二区三区| 国产精品久久久久久久久久小说| 欧美巨大黑人极品精男| 国产精品成av人在线视午夜片| 国产午夜精品一区二区三区| 亚洲精品少妇网址| 久久久国产一区二区| 亚洲美女激情视频| 日韩欧美在线视频|