日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授

發布時間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序示例–模型選擇

在新的一組樣本中,我們將通過交叉驗證集選擇模型,參數 CCC 和 高斯核的參數 δδδ 我們都將在以下 8 個值中選取測試,則總共構成了 8×8=648×8=648×8=64 個模型:

[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]

我們選擇使得交叉驗證集錯誤率最低的模型:

# 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# 糾正負樣本 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]# 獲得訓練模型 tol = 1e-3 maxIter = 5 models = [smo.getSmo(X, y, C, tol, maxIter, kernel=smo.rbfKernel(delta))for delta, C in deltaCPairs]# 開始訓練 results = [train() for train, _, _ in models]# 利用交叉驗證集選擇模型 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]# 繪制數據點 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=1.0,δ=0.10C=1.0,δ=0.10C=1.0,δ=0.10 時,模型的交叉驗證集誤差最低:

總結

以上是生活随笔為你收集整理的5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。