Source code for qikify.controllers.SVM
import numpy as np
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.svm import SVC
from qikify.helpers import standardize
[docs]class SVM(object):
[docs] def train(self, X, gnd, gridSearch = False):
if gridSearch:
paramGrid = { 'C': [1, 5, 10, 50, 100], 'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1] }
print 'SVM: Grid search using parameters: ', paramGrid
self.clf = GridSearchCV(SVC(kernel='rbf'), paramGrid, n_jobs=4, fit_params={'class_weight': {1 : 1, -1 : 1}})
else:
self.clf = SVC()
self.scaleDict = dotdict({'mean': X.mean(axis = 0), 'std': X.std(axis = 0)})
self.clf.fit(standardize(X, self.scaleDict), gnd)
[docs] def predict(self, X):
return self.clf.predict(standardize(X, self.scaleDict))
[docs] def getTEYL(self, gnd, predicted):
te = sum(np.logical_and((gnd < 0), (predicted > 0))) * 100.0 / len(gnd)
yl = sum(np.logical_and((gnd > 0), (predicted < 0))) * 100.0 / len(gnd)
return [te, yl]