sklearn实战:SVM(线性核函数,多项式核函数,高斯核函数比较)
发布时间:2018-06-08 14:25,
浏览次数:1383
, 标签:
sklearn
SVM
%matplotlib inline import matplotlib.pyplot as plt import numpy as np def
plot_hyperplane(clf, X, y, h=0.02, draw_sv=True, title='hyperplan'): # create a
mesh to plot in x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min,
y_max = X[:,1].min() - 1, X[:, 1].max() + 1 xx, yy =
np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
plt.title(title) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max())
plt.xticks(()) plt.yticks(()) Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])#
Put the result into a color plot Z = Z.reshape(xx.shape) plt.contourf(xx, yy,
Z, cmap='hot', alpha=0.5) markers = ['o', 's', '^'] colors = ['b', 'r', 'c']
labels = np.unique(y)for label in labels: plt.scatter(X[y==label][:, 0],
X[y==label][:,1], c=colors[label], marker=markers[label]) if draw_sv: sv =
clf.support_vectors_ plt.scatter(sv[:,0], sv[:, 1], c='y', marker='x') from
sklearnimport svm from sklearn.datasets import make_blobs X, y =
make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=0.3) clf =
svm.SVC(C=1.0, kernel='linear') clf.fit(X, y) plt.figure(figsize=(12, 4), dpi=
144) plot_hyperplane(clf, X, y, h=0.01, title='Maximum Margin Hyperplan')
from sklearn import svm from sklearn.datasets import make_blobs X, y =
make_blobs(n_samples=100, centers=3, random_state=0, cluster_std=0.8)
clf_linear = svm.SVC(C=1.0, kernel='linear') clf_poly = svm.SVC(C=1.0, kernel=
'poly', degree=3) clf_rbf = svm.SVC(C=1.0, kernel='rbf', gamma=0.5) clf_rbf2 =
svm.SVC(C=1.0, kernel='rbf', gamma=0.1) plt.figure(figsize=(10, 10), dpi=144)
clfs = [clf_linear, clf_poly, clf_rbf, clf_rbf2] titles = ['Linear Kernel',
'Polynomial Kernel with Degree=3', 'Gaussian Kernel with $\gamma=0.5$',
'Gaussian Kernel with $\gamma=0.1$'] for clf, i in zip(clfs, range(len(clfs))):
clf.fit(X, y) plt.subplot(2, 2, i+1) plot_hyperplane(clf, X, y, title=titles[i])