5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授
生活随笔
收集整理的這篇文章主要介紹了
5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
程序示例–模型選擇
在新的一組樣本中,我們將通過(guò)交叉驗(yàn)證集選擇模型,參數(shù) CCC 和 高斯核的參數(shù) δδδ 我們都將在以下 8 個(gè)值中選取測(cè)試,則總共構(gòu)成了 8×8=648×8=648×8=64 個(gè)模型:
[0.01,0.03,0.1,0.3,1,3,10,30][0.01,\quad 0.03,\quad 0.1,\quad 0.3,\quad 1,\quad 3,\quad 10,\quad 30][0.01,0.03,0.1,0.3,1,3,10,30]
我們選擇使得交叉驗(yàn)證集錯(cuò)誤率最低的模型:
# coding: utf8 # svm/test_diagnose.pyimport numpy as np import smo import matplotlib.pyplot as plt from scipy.io import loadmatdata = loadmat('data/ex6data3.mat')X = np.mat(data['X'], dtype=np.float) y = np.mat(data['y'], dtype=np.float) XVal = np.mat(data['Xval'], dtype=np.float) yVal = np.mat(data['yval'], dtype=np.float)m, n = X.shape mVal, _ = XVal.shape# 糾正負(fù)樣本 y[y == 0] = -1 yVal[yVal == 0] = -1Cs = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30] deltas = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30]# 獲得所有 C 及 delta 的組合 deltaCPairs = [[delta, C] for C in Cs for delta in deltas]# 獲得訓(xùn)練模型 tol = 1e-3 maxIter = 5 models = [smo.getSmo(X, y, C, tol, maxIter, kernel=smo.rbfKernel(delta))for delta, C in deltaCPairs]# 開(kāi)始訓(xùn)練 results = [train() for train, _, _ in models]# 利用交叉驗(yàn)證集選擇模型 predictions = [models[idx][2](XVal, alphas, b, supportVectorsIndex, supportVectors)for idx, (alphas, w, b, supportVectorsIndex, supportVectors, iterCount) in enumerate(results)] errorRates = [(np.multiply(prediction, yVal).A < 0).sum() /float(mVal) for prediction in predictions] minIdx = np.argmin(errorRates) alphas, w, b, supportVectorsIndex, supportVectors, iterCount = results[minIdx] delta, C = deltaCPairs[minIdx]# 繪制數(shù)據(jù)點(diǎn) x1Min = X[:, 0].min() x1Max = X[:, 0].max() x2Min = X[:, 1].min() x2Max = X[:, 1].max() plt.title(r'C=%.2f, $\delta$=%.2f, error=%.2f'%(C, delta, errorRates[minIdx])) plt.xlabel('X1') plt.ylabel('X2') plt.xlim(x1Min, x1Max) plt.ylim(x2Min, x2Max)for i in range(m):x = X[i].A[0]if y[i] == 1:color = 'black'if i in supportVectorsIndex:color = 'red'plt.scatter(x[0], x[1], marker='*', color=color, s=50)else:color = 'green'if i in supportVectorsIndex:color = 'red'plt.scatter(x[0], x[1], marker='o', color=color, s=50)# 繪制決策邊界 xx1, xx2 = np.meshgrid(np.linspace(x1Min, x1Max, 100),np.linspace(x2Min, x2Max, 100) ) _, _, predict = models[minIdx] predictX = np.mat(np.c_[xx1.ravel(), xx2.ravel()]) predictions = predict(predictX, alphas, b, supportVectorsIndex, supportVectors) predictions = predictions.reshape(xx1.shape) plt.contour(xx1, xx2, predictions, [0.5], linewidths=5) plt.show()測(cè)試結(jié)果如下,在 C=1.0,δ=0.10C=1.0,δ=0.10C=1.0,δ=0.10 時(shí),模型的交叉驗(yàn)證集誤差最低:
總結(jié)
以上是生活随笔為你收集整理的5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 5.9 程序示例--非线性分类-机器学习
- 下一篇: 5.11 程序示例--垃圾邮件检测-机器