A tutorial exercise using Cross-validation with an SVM on the Digits dataset.
This exercise is used in the Cross-validation generators part of the Model selection: choosing estimators and their parameters section of the A tutorial on statistical-learning for scientific data processing.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | print (__doc__) import numpy as np from sklearn.model_selection import cross_val_score from sklearn import datasets, svm digits = datasets.load_digits() X = digits.data y = digits.target svc = svm.SVC(kernel = 'linear' ) C_s = np.logspace( - 10 , 0 , 10 ) scores = list () scores_std = list () for C in C_s: svc.C = C this_scores = cross_val_score(svc, X, y, n_jobs = 1 ) scores.append(np.mean(this_scores)) scores_std.append(np.std(this_scores)) # Do the plotting import matplotlib.pyplot as plt plt.figure( 1 , figsize = ( 4 , 3 )) plt.clf() plt.semilogx(C_s, scores) plt.semilogx(C_s, np.array(scores) + np.array(scores_std), 'b--' ) plt.semilogx(C_s, np.array(scores) - np.array(scores_std), 'b--' ) locs, labels = plt.yticks() plt.yticks(locs, list ( map ( lambda x: "%g" % x, locs))) plt.ylabel( 'CV score' ) plt.xlabel( 'Parameter C' ) plt.ylim( 0 , 1.1 ) plt.show() |
Total running time of the script: (0 minutes 5.397 seconds)
Download Python source code:
plot_cv_digits.py
Download IPython notebook:
plot_cv_digits.ipynb
Please login to continue.