Beispiel #1
0
def m_svm():
  if ARGV.one_vs:
    svm_model = svm.svm_to_binary(svm.svm_raw())
  else:
    svm_model = multi.one_against_one(svm.svm_to_binary(svm.svm_raw()))
  # return milk.defaultclassifier(mode='slow', multi_strategy='1-vs-1')
  learner = milk.supervised.classifier.ctransforms(
    # remove nans
    supervised.normalise.chkfinite(),
    # normalize to [-1,1]
    supervised.normalise.interval_normalise(),
    # feature selection
    featureselection.featureselector(
      featureselection.linear_independent_features),
    # sda filter
    featureselection.sda_filter(),
    # same parameter range as 'medium'
    supervised.gridsearch(
      svm_model,
      params = {
        'C': 2.0 ** np.arange(-2, 4),
        'kernel': [ svm.rbf_kernel(2.0 ** i) for i in xrange(-4, 4) ]
      }
    )
  )
  return learner
Beispiel #2
0
    def metric(self):
        weak = milk.supervised.tree.stump_learner()
        model = milk.supervised.adaboost.boost_learner(weak)
        model = one_against_one(model)

        totalTimer = Timer()
        with totalTimer:
            model = model.train(self.data_split[0], self.data_split[1])

        metric = {}
        metric["runtime"] = totalTimer.ElapsedTime()
        return metric
Beispiel #3
0
def test_too_many_boolean_indices_regression():
    import milk.supervised.randomforest
    import milk.supervised.adaboost
    import milksets.wine
    from milk.supervised.multi import one_against_one

    weak = milk.supervised.randomforest.rf_learner()
    learner = milk.supervised.adaboost.boost_learner(weak)
    learner = one_against_one(learner)

    features, labels = milksets.wine.load()

    # sample features so that the test is faster (still gives error):
    learner.train(features[::16], labels[::16])
Beispiel #4
0
def test_too_many_boolean_indices_regression():
    import milk.supervised.randomforest
    import milk.supervised.adaboost
    import milksets.wine
    from milk.supervised.multi import one_against_one

    weak = milk.supervised.randomforest.rf_learner()
    learner = milk.supervised.adaboost.boost_learner(weak)
    learner = one_against_one(learner)

    features, labels = milksets.wine.load()

    # sample features so that the test is faster (still gives error):
    learner.train(features[::16], labels[::16])
Beispiel #5
0
def leave_one_out(y, x, param=None, n=None):
    results = []
    for i, test in enumerate(zip(y, x)):
        training_y = y[:i] + y[i+1:]
        training_x = x[:i] + x[i+1:]

        training_y = np.array(training_y)
        training_x = np.array([np.array(tx) for tx in training_x])

        learner = mil_rf.rf_learner()
        learner = mil_multi.one_against_one(learner)
        model = learner.train(training_x, training_y)
        result = model.apply(np.array(x[i:i+1][0]))

        results.append((result,) + (test[0], 
                                    make_d.decode(x[i], DECODE_DIC)))
    return results
Beispiel #6
0
def random_forest(X, Y):
    from milk.supervised import randomforest
    from milk.supervised.multi import one_against_one
    import milk.nfoldcrossvalidation
    
    features = np.array(X)   
    labels = np.array(Y) 
    rf_learner = randomforest.rf_learner()
    # rf is a binary learner, so we transform it into a multi-class classifier
    learner = one_against_one(rf_learner)
    #     learner = rf_learner
    
    # result
    # cross validate with this learner and return predictions on left-out elements
    cmat, names, preds = milk.nfoldcrossvalidation(features, labels, nfolds=4, classifier=learner, return_predictions=1)
    print 'cross-validation accuracy:', cmat.trace() / float(cmat.sum())
    return 
Beispiel #7
0
def random_forest(X, Y):
    from milk.supervised import randomforest
    from milk.supervised.multi import one_against_one
    import milk.nfoldcrossvalidation

    features = np.array(X)
    labels = np.array(Y)
    rf_learner = randomforest.rf_learner()
    # rf is a binary learner, so we transform it into a multi-class classifier
    learner = one_against_one(rf_learner)
    #     learner = rf_learner

    # result
    # cross validate with this learner and return predictions on left-out elements
    cmat, names, preds = milk.nfoldcrossvalidation(features,
                                                   labels,
                                                   nfolds=4,
                                                   classifier=learner,
                                                   return_predictions=1)
    print 'cross-validation accuracy:', cmat.trace() / float(cmat.sum())
    return
Beispiel #8
0
def m_svm():
    if ARGV.one_vs:
        svm_model = svm.svm_to_binary(svm.svm_raw())
    else:
        svm_model = multi.one_against_one(svm.svm_to_binary(svm.svm_raw()))
    # return milk.defaultclassifier(mode='slow', multi_strategy='1-vs-1')
    learner = milk.supervised.classifier.ctransforms(
        # remove nans
        supervised.normalise.chkfinite(),
        # normalize to [-1,1]
        supervised.normalise.interval_normalise(),
        # feature selection
        featureselection.featureselector(
            featureselection.linear_independent_features),
        # sda filter
        featureselection.sda_filter(),
        # same parameter range as 'medium'
        supervised.gridsearch(
            svm_model,
            params={
                'C': 2.0**np.arange(-2, 4),
                'kernel': [svm.rbf_kernel(2.0**i) for i in xrange(-4, 4)]
            }))
    return learner
Beispiel #9
0
from milk.supervised import randomforest
from milk.supervised.multi import one_against_one
import milk.nfoldcrossvalidation
import milk.unsupervised

import pylab
from milksets import wine

# Load 'wine' dataset
features, labels = wine.load()
# random forest learner
rf_learner = randomforest.rf_learner()
# rf is a binary learner, so we transform it into a multi-class classifier
learner = one_against_one(rf_learner)

# cross validate with this learner and return predictions on left-out elements
cmat,names, preds = milk.nfoldcrossvalidation(features, labels, classifier=learner, return_predictions=1)

print('cross-validation accuracy:', cmat.trace()/float(cmat.sum()))

# dimensionality reduction for display
x,v = milk.unsupervised.pca(features)
colors = "rgb" # predicted colour
marks = "xo" # whether the prediction was correct
for (y,x),p,r in zip(x[:,:2], preds, labels):
    c = colors[p]
    m = marks[p == r]
    pylab.plot(y,x,c+m)
pylab.show()

Beispiel #10
0
 def BuildModel(self):
     # Create and train the classifier.
     rf_learner = randomforest.rf_learner(**self.opts)
     learner = one_against_one(rf_learner)
     return learner
Beispiel #11
0
 def BuildModel(self):
   # Create and train the classifier.
   weak = milk.supervised.tree.stump_learner()
   learner = milk.supervised.adaboost.boost_learner(weak)
   learner = one_against_one(learner)
   return learner
Beispiel #12
0
 def BuildModel(self):
   # Create and train the classifier.
   rf_learner = randomforest.rf_learner(**self.opts)
   learner = one_against_one(rf_learner)
   return learner