Group work for a Monash Research Methods course
at main 50 lines 1.7 kB view raw
1class ImageClassifier: 2 """Class to create an ImageClassifier from a regular classifier with 5 3 methods that are common amongst classifiers. 4 """ 5 6 def __init__(self, clf, *args, **kwargs): 7 self.clf = clf(*args, **kwargs) 8 9 def fit(self, X, *args, **kwargs): 10 X = X.reshape((len(X), -1)) 11 return self.clf.fit(X, *args, **kwargs) 12 13 def predict(self, X, *args, **kwargs): 14 X = X.reshape((len(X), -1)) 15 return self.clf.predict(X, *args, **kwargs) 16 17 def score(self, X, *args, **kwargs): 18 X = X.reshape((len(X), -1)) 19 return self.clf.score(X, *args, **kwargs) 20 21 def get_params(self, *args, **kwargs): 22 return self.clf.get_params(*args, **kwargs) 23 24 def set_params(self, **params): 25 return self.set_params(**params) 26 27if __name__ == '__main__': 28 29 # Import datasets, classifiers and performance metrics 30 from sklearn import datasets, svm, metrics 31 32 # The digits dataset 33 digits = datasets.load_digits() 34 35 n_samples = len(digits.images) 36 data = digits.images 37 38 # Create a classifier: a support vector classifier 39 classifier = ImageClassifier(svm.SVC, gamma=0.001) 40 41 # We learn the digits on the first half of the digits 42 classifier.fit(data[:n_samples // 2], digits.target[:n_samples // 2]) 43 44 # Now predict the value of the digit on the second half: 45 expected = digits.target[n_samples // 2:] 46 predicted = classifier.predict(data[n_samples // 2:]) 47 48 print("Classification report for classifier %s:\n%s\n" 49 % (classifier, metrics.classification_report(expected, predicted))) 50 print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))