機器學習演算法(6)用Python實現用核支援向量機求解非線性問題
機器學習演算法(6)用Python實現用核支援向量機求解非線性問題
邏輯:核方法的邏輯是針對線性不可分資料,建立非線性組合,通過對映函式把原始特徵投影到一個高維空間,特徵在該空間變得線性可分。
只需用scikit-learn庫的 SVC類,以引數kernel='rbf’替換kernel=‘linear’:
import matplotlib.pyplot as plt
import numpy as np
from sklearn.svm import SVC
from matplotlib.colors import ListedColormap
np.random.seed(1)
X_xor = np.random.randn(200, 2)
y_xor = np.logical_xor(X_xor[:, 0] > 0,
X_xor[:, 1] > 0)
y_xor = np.where(y_xor, 1, -1)
plt.scatter(X_xor[y_xor == 1, 0],
X_xor[y_xor == 1, 1],
c='b', marker='x',
label='1')
plt.scatter(X_xor[y_xor == -1, 0],
X_xor[y_xor == -1, 1],
c='r',
marker='s',
label='-1')
plt.xlim([-3, 3])
plt.ylim([-3, 3])
plt.legend(loc='best')
plt.tight_layout()
#plt.savefig('images/03_12.png', dpi=300)
plt.show()
def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):
# setup marker generator and color map
markers = ('s', 'x', 'o', '^', 'v')
colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
cmap = ListedColormap(colors[:len(np.unique(y))])
# plot the decision surface
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
np.arange(x2_min, x2_max, resolution))
Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
Z = Z.reshape(xx1.shape)
plt.contourf(xx1, xx2, Z, alpha=0.3, cmap=cmap)
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y == cl, 0],
y=X[y == cl, 1],
alpha=0.8,
c=colors[idx],
marker=markers[idx],
label=cl,
edgecolor='black')
# highlight test samples
if test_idx:
# plot all samples
X_test, y_test = X[test_idx, :], y[test_idx]
plt.scatter(X_test[:, 0],
X_test[:, 1],
c='y',
edgecolor='black',
alpha=1.0,
linewidth=1,
marker='o',
s=100,
label='test set')
svm = SVC(kernel='rbf', random_state=1, gamma=0.10, C=10.0)
svm.fit(X_xor, y_xor)
plot_decision_regions(X_xor, y_xor,
classifier=svm)
plt.legend(loc='upper left')
plt.tight_layout()
#plt.savefig('images/03_14.png', dpi=300)
plt.show()
執行結果:
資料:
分類結果:
備註:程式碼為《python機器學習》(原書第2版)機械工業出版社,書籍中示例程式碼,學習過程中整理,現分享出來,供大家學習參考。
相關文章
- 《機器學習_07_03_svm_核函式與非線性支援向量機》機器學習函式
- 非線性支援向量機 與核函式函式
- 機器學習之支援向量機(線性模型)的最佳化問題機器學習模型
- 手擼機器學習演算法 - 非線性問題機器學習演算法
- 機器學習演算法(2)用Python實現自適應線性神經元(隨機梯度下降+線上學習)機器學習演算法Python隨機梯度
- 【Python機器學習實戰】感知機和支援向量機學習筆記(三)之SVM的實現Python機器學習筆記
- 【機器學習】線性迴歸python實現機器學習Python
- 機器學習——支援向量機(SVM)機器學習
- 機器學習:支援向量機(SVM)機器學習
- 支援向量機之線性可分向量機
- 機器學習基礎專題:支援向量機SVM機器學習
- 機器學習——支援向量機SVM(一)機器學習
- 【機器學習】支援向量機分類機器學習
- 數學推導+Python實現機器學習演算法:線性迴歸Python機器學習演算法
- 機器學習之線性迴歸(純python實現)機器學習Python
- 機器學習之支援向量機原理和sklearn實踐機器學習
- 機器學習演算法筆記之5:支援向量機SVM機器學習演算法筆記
- 支援向量機|SMO演算法實現演算法
- TensorFlow.NET機器學習入門【3】採用神經網路實現非線性迴歸機器學習神經網路
- 人工智慧-機器學習-支援向量機SVM人工智慧機器學習
- 機器學習之支援向量機的超平面機器學習
- 【機器學習】支援向量機(個人筆記)機器學習筆記
- 支援向量機python實現(簡易版)Python
- 支援向量機(SVM)和python實現(二)Python
- 用機器學習實現情感分析機器學習
- 【機器學習】線性迴歸sklearn實現機器學習
- 吳恩達機器學習系列17:支援向量機吳恩達機器學習
- 機器學習之支援向量與間隔機器學習
- 機器學習基礎篇:支援向量機(SVM)理論與實踐機器學習
- 機器學習(四):通俗理解支援向量機SVM及程式碼實踐機器學習
- 支援向量機SVM:從數學原理到實際應用
- 機器學習 第6篇:線性模型概述機器學習模型
- 吳恩達機器學習筆記 —— 13 支援向量機吳恩達機器學習筆記
- 《吳恩達機器學習》學習筆記007_支援向量機吳恩達機器學習筆記
- 用定租問題學透機器學習的K近鄰演算法機器學習演算法
- 非線性最小二乘問題的求解方法
- 【火爐煉AI】機器學習014-用SVM構建非線性分類模型AI機器學習模型
- 用PMML實現機器學習模型的跨平臺上線機器學習模型