机器学习实践指南(二)—— 作为 baseline 的 SVM(scikit-learn)

工业界的 SVM,以及 Logistic Regression,因其相较深度神经网络更为轻量级,且性能也不会差别很大的缘故,一直是模型选择的首选。而在学术界,深度学习方兴未艾的今天,SVM 只能作为一个基准模型使用,作为其他模型的陪衬。

我们就以一个手写字符识别(mnist)的例子说明,如何使用 SVM :

import pickle, gzip
from sklearn import svm 

def load_data():
    with gzip.open('./mnist.pkl.gz') as fp:
        training_data, valid_data, test_data = pickle.load(fp)
    return training_data, valid_data, test_data

def svm_baseline():
    training_data, valid_data, test_data = load_data()
    clf = svm.SVC()
    clf.fit(training_data[0], training_data[1])
    predications = clf.predict(test_data[0])
    num_correct = sum(np.where(predications == test_data[1], 1, 0))
    print 'Baseline classifier using svm.'
    print '%s of %s correct' % (num_correct, len(test_data[0]))

if __name__ == '__main__':
    svm_baseline()

你可能感兴趣的:(机器学习实践指南(二)—— 作为 baseline 的 SVM(scikit-learn))