Package ml :: Package var :: Module svmeasy
[hide private]
[frames] | no frames]

Source Code for Module ml.var.svmeasy

  1  ''' 
  2   
  3  @author: Eleftherios Avramidis 
  4  ''' 
  5   
  6  from Orange.classification.svm import SVMLearner, SVMClassifierWrapper 
  7  from Orange.optimization import TuneMParameters 
  8  from Orange.core import DomainContinuizer 
  9   
 10   
11 -class SVMEasyLearner(SVMLearner):
12 ''' 13 classdocs 14 '''
15 - def __init__(self, **kwds):
16 self.folds=4 17 self.verbose=True 18 SVMLearner.__init__(self, **kwds) 19 self.learner = SVMLearner(**kwds) 20 try: 21 self.multinomialTreatment = eval(kwds["multinomialTreatment"]) 22 except: 23 self.multinomialTreatment = DomainContinuizer.NValues 24 try: 25 self.continuousTreatment = eval(kwds["continuousTreatment"]) 26 except: 27 self.continuousTreatment = DomainContinuizer.NormalizeBySpan 28 try: 29 self.classTreatment = eval(kwds["classTreatment"]) 30 except: 31 self.classTreatment = DomainContinuizer.Ignore
32
33 - def __call__(self, examples, weight=0):
34 print "continuizing data" 35 newdomain, newexamples = self.continuize(examples) 36 newexamples.save("continuized_examples.tab") 37 self.verbose = True 38 print "tuning classifier" 39 classifier, fittedParameters = self.tuneClassifier(newexamples, newdomain, examples) 40 41 paramfile = open("svm.params", 'w') 42 print fittedParameters 43 for param in fittedParameters: 44 paramfile.write(str(param)) 45 paramfile.write("\n") 46 47 paramfile.close() 48 return classifier
49
50 - def continuize(self, examples):
51 transformer=DomainContinuizer() 52 #transformer.multinomialTreatment=orange.DomainContinuizer.NValues 53 #transformer.continuousTreatment=orange.DomainContinuizer.NormalizeBySpan 54 transformer.multinomialTreatment = self.multinomialTreatment 55 transformer.continuousTreatment = self.continuousTreatment 56 transformer.classTreatment = self.classTreatment 57 #transformer.classTreatment = orange.DomainContinuizer.Ignore 58 newdomain = transformer(examples) 59 newexamples = examples.translate(newdomain) 60 return newdomain, newexamples
61 #print newexamples[0] 62
63 - def tuneClassifier(self, newexamples, newdomain, examples):
64 params={} 65 parameters = [] 66 self.learner.normalization = False ## Normalization already done 67 68 if self.svm_type in [1,4]: 69 numOfNuValues=9 70 if self.svm_type == SVMLearner.Nu_SVC: 71 maxNu = max(self.maxNu(newexamples) - 1e-7, 0.0) 72 else: 73 maxNu = 1.0 74 parameters.append(("nu", [i/10.0 for i in range(1, 9) if i/10.0 < maxNu] + [maxNu])) 75 else: 76 parameters.append(("C", [2**a for a in range(-5,15,2)])) 77 if self.kernel_type==2: 78 parameters.append(("gamma", [2**a for a in range(-5,5,2)]+[0])) 79 tunedLearner = TuneMParameters(object=self.learner, parameters=parameters, folds=self.folds) 80 print "apply learner" 81 import orngWrap 82 tunedLearner = orngWrap.TuneMParameters(object=self.learner, 83 parameters=parameters, 84 folds=self.folds) 85 86 87 return SVMClassifierWrapper(tunedLearner(newexamples, 88 verbose=self.verbose))
89 90 # return appliedTunedLearner, appliedTunedLearner.fittedParameters 91 92 93 94 95 #examples = orange.ExampleTable("/home/Eleftherios Avramidis/workspace/TaraXUscripts/src/training-attset1.100.tab") 96 #svmlearner = SVMEasy(examples) 97 # 98 #testexamples = orange.ExampleTable("/home/Eleftherios Avramidis/workspace/TaraXUscripts/src/training-attset2.tab") 99 #print svmlearner(testexamples[1]) 100 101 #objectfile = open("/tmp/svmeasy.pickle", 'w') 102 #pickle.dump(svmlearner, objectfile) 103 #objectfile.close() 104 # 105 #objectfile = open("/tmp/svmeasy.pickle", 'r') 106 #recovered_svmlearner = pickle.load(objectfile) 107 #objectfile.close() 108 #print recovered_svmlearner(testexamples[1]) 109