⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ensemble2.py

📁 orange源码 数据挖掘技术
💻 PY
字号:
# Description: Example of how to build ensamble learners in Orange. Takes a list of learners, and for prediction uses the highest predicted class probability.
# Category:    modelling
# Uses:        promoters.tab
# Classes:     orngTest.crossValidation
# Referenced:  o_ensemble.htm

import orange, orngTree
import orngTest, orngStat

# define the learner and classifier such that
# it can be used as similar standard orange classes

def WinnerLearner(examples=None, **kwds):
  learner = apply(WinnerLearner_Class, (), kwds)
  if examples:
    return learner(examples)
  else:
    return learner

class WinnerLearner_Class:
  def __init__(self, name='winner classifier', learners=None):
    self.name = name
    self.learners = learners

  def __call__(self, data, learners=None, weight=None):
    if learners:
      self.learners = learners
    classifiers = []
    for l in self.learners:
      classifiers.append(l(data))
    return WinnerClassifier(classifiers = classifiers)

class WinnerClassifier:
  def __init__(self, **kwds):
    self.__dict__ = kwds

  def __call__(self, example, resultType = orange.GetValue):
    pmatrix = []
    for c in self.classifiers:
      pmatrix.append(c(example, orange.GetProbabilities))

    maxp = []  # stores max class probabilities for each classifiers
    for pv in pmatrix:
      maxp.append(max(pv))

    p = max(maxp)  # max class probability
    classifier_index = maxp.index(p)
    c = pmatrix[classifier_index].modus()
    
    if resultType == orange.GetValue:
      return c
    elif resultType == orange.getClassDistribution:
      return pmatrix[classifier_index]
    else:
      return (c, pmatrix[classifier_index])


tree = orngTree.TreeLearner(mForPruning=5.0)
tree.name = 'class. tree'
bayes = orange.BayesLearner()
bayes.name = 'naive bayes'
winner = WinnerLearner(learners=[tree, bayes])
winner.name = 'winner'

majority = orange.MajorityLearner()
majority.name = 'default'
learners = [majority, tree, bayes, winner]

data = orange.ExampleTable("promoters")

results = orngTest.crossValidation(learners, data)
print "Classification Accuracy:"
for i in range(len(learners)):
    print ("%15s: %5.3f") % (learners[i].name, orngStat.CA(results)[i])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -