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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

SVM学习——在matlab上安装libsvm库(一)

發布時間:2023/12/15 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SVM学习——在matlab上安装libsvm库(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境搭建

  • 平臺:

    • Windows PC
    • MATLAB 軟件
    • libsvm庫(SVM工具箱)
  • 安裝步驟

  • 準備工作

    • 安裝對應的編譯器,在網站上查看當前matlab版本支持的編譯器版本。本文使用的matlab 2015a版本(支持編譯器詳情)。
    • 通過查詢,發現Microsoft Windows SDK7.1支持matlab 2015a,所以下面安裝這個編譯器。
    • 根據安裝說明,在安裝這個Windows SDK7.1之前,1)首先需要安裝最新的Windows service Pack,用于更新(ps:猜測每個電腦都默認安裝,所以在安裝過程中直接忽視了這條要求)。2)安裝Microsoft .NET Framework 4,用于支持安裝Microsoft Windows SDK7.1。
  • 安裝libsvm

    • 在libsvm官網上查找相應的libsvm庫,選擇MATLAB and OCTAVE語言,下載最新版的libsvm-3.22.zip
    • 下載后把工具包放在MATLAB安裝目錄下的toolbox文件夾中,例如, D:\Learn program\matlab2015a\toolbox\libsvm-3.22。
    • 假設你使用的是64位的操作系統和matlab。打開matlab,在matlab目錄中添加(set path):D:\Learn program\matlab2015a\toolbox\libsvm-3.22\windows。因為windows下包含了matlab可執行的二進制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64
    • 在matlab中,進入到D:\Learn program\matlab2015a\toolbox\libsvm-3.22\matlab目錄下。運行mex –setup,此時按照LIBSVM在matlab下的使用安裝文中提到的步驟繼續操作。
    • 但是由于接口的問題,又出現警告:

      MEX 配置為使用 ‘Microsoft Visual C++ 2012 (C)’ 以進行 C 語言編譯。

      警告: MATLAB C 和 Fortran API 已更改,現可支持

      包含 2^32-1 個以上元素的 MATLAB 變量。不久以后,您需要更新代碼以利用新的 API。您可以在以下網址找到相關詳細信息:http://www.mathworks.com/help/ma ... use-64-bit-api.html。
    • 根據 關于libsvm工具箱在64位matlab下的安裝說明文中提到的方法,進行下面關鍵兩步:

      • 切換matlab運行目錄至:D:\Learn program\matlab2015a\toolbox\libsvm-3.22\matlab,在命令行輸入make,也就是該目錄下的那個make文件。這時候就像以前安裝libsvm一樣,會自動make出來很多文件,不用管,主要是會看到make出帶有mexm64后綴名的文件,這就成功了。
      • 拷貝第一步中matlab文件夾下所有make出來的文件(.mex64),到libsvm-3.22\windows文件夾下,全部替換。這樣就可以了。
  • 測試(此處將libsvm-3.22中文heart_scale拷貝到libsvm-3.22\matlab目錄下,運行下面的語句)

    1
    2
    3
    [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
    model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');
    [predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % test the trainingdata
  • 測試結果,出現如下結果表明安裝成功

    1
    2
    3
    4
    5
    6
    optimization finished, #iter = 134
    nu = 0.433785
    obj = -101.855060, rho = 0.426412
    nSV = 130, nBSV = 107
    Total nSV = 130
    Accuracy = 86.6667% (234/270) (classification)

SVM參數優化

MATLAB中三種得到最佳g和c參數的方法:

遺傳算法(GA)選擇最佳的SVM參數c&g

  • 在運行案例時,報錯:Undefined function or variable 'rep'.,未找到rep函數,此時,需要安裝GA的工具箱,下載英國謝菲爾德大學開發的遺傳算法工具箱gatbx,可從此處下載

由于其中的函數擴展名是M,而不是m,需要將其全部改為小寫的m,再把文件夾復制到toolbox中,加載至matlab,即可。

  • 函數接口介紹

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    (1)利用GA參數尋優函數(分類問題):gaSVMcgForClass
    [bestCVaccuracy,bestc,bestg,ga_option]=
    gaSVMcgForClass(train_label,train,ga_option)
    輸入:
    train_label:訓練集的標簽,格式要求與svmtrain相同。
    train:訓練集,格式要求與svmtrain相同。
    ga_option:GA中的一些參數設置,可不輸入,有默認值,詳細請看代碼的幫助說明。
    輸出:
    bestCVaccuracy:最終CV意義下的最佳分類準確率。
    bestc:最佳的參數c。
    bestg:最佳的參數g。
    ga_option:記錄GA中的一些參數。
    \==========================================================
    (2)利用GA參數尋優函數(回歸問題):gaSVMcgForRegress
    [bestCVmse,bestc,bestg,ga_option]=
    gaSVMcgForRegress(train_label,train,ga_option)
    其輸入輸出與gaSVMcgForClass類似,這里不再贅述。
  • 使用案例,加入gaSVMcgForClass.m函數

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    % GA的參數選項初始化
    ga_option.maxgen = 200;
    ga_option.sizepop = 20;
    ga_option.cbound = [0,100];
    ga_option.gbound = [0,100];
    ga_option.v = 5;
    ga_option.ggap = 0.9;
    % 得到最佳參數
    [bestacc,bestc,bestg] = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);
    % 利用最佳的參數進行SVM網絡訓練
    cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
    model = svmtrain(train_wine_labels,train_wine,cmd);

PSO選擇最佳的SVM參數c&g

  • 使用案例,加入psoSVMcgForClass.m函數

    1
    2
    3
    4
    5
    % 得到最佳參數
    [bestacc,bestc,bestg] = psoSVMcgForClass(train_wine_labels,train_wine);
    % 利用最佳的參數進行SVM網絡訓練
    cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
    model = svmtrain(train_wine_labels,train_wine,cmd);

貪婪算法(Grid)選擇最佳的SVM參數c&g

  • 使用案例,加入gridSVMcgForClass.m函數

    1
    2
    3
    4
    5
    6
    7
    % 首先進行粗略選擇: c&g 的變化范圍是 2^(-10),2^(-9),...,2^(10)
    [bestacc,bestc,bestg] = gridSVMcgForClass(train_wine_labels,train_wine,-10,10,-10,10);
    % 根據粗略選擇的結果圖再進行精細選擇: c 的變化范圍是 2^(-2),2^(-1.5),...,2^(4), g 的變化范圍是 2^(-4),2^(-3.5),...,2^(4),
    [bestacc,bestc,bestg] = SVMcgForClass(train_wine_labels,train_wine,-2,4,-4,4,3,0.5,0.5,0.9);
    %% 利用最佳的參數進行SVM網絡訓練
    cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
    model = svmtrain(train_wine_labels,train_wine,cmd);

參考:

  • LIBSVM在matlab下的使用安裝
  • 關于libsvm工具箱在64位matlab下的安裝說明
  • 總結

    以上是生活随笔為你收集整理的SVM学习——在matlab上安装libsvm库(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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