1. 程式人生 > >學習筆記:MATLAB+libsvm的SVR簡單例項

學習筆記:MATLAB+libsvm的SVR簡單例項

迴歸問題,個人理解是相當於有一個函式y=f(x)(也可能是n維的函式),這個函式可能是知道表示式,也可能不知道表示式。我們需要通過一組向量(x,y)進行訓練得到一個模型model,這個model也相當於是根據已知的訓練集(x,y),而得到的"f(x)表示式",然後使用測試集在得到的model上進行預測。

原博主是通過y=-x^2這個表示式進行訓練,在影象上顯示原始資料和迴歸資料。

執行原博的程式碼後出現錯誤有

Usage: [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
       [predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
Parameters:

錯誤使用 plot 向量長度必須相同。 

並且控制檯的預測值輸出為空


錯誤提示是我使用svmpredict的引數沒有設定正確,所以導致預測輸出得到的結果為空,進而使plot函式的x和y向量長度不同。

原因可能是原作者當時使用的libsvm的版本和我現在使用的不同,所以引數需要修改。

我使用的是MATLAB R2014a,libsvm-3.22

修改過後的程式碼如下:(初學,加了一些備註)

%%clean work
tic;%記錄執行時間
close all;%關閉所有figure視窗
clear;%清空變數
clc;%清空命令
format compact;%空格緊湊

%生成待迴歸的資料
x = (-1:0.1:1)';
y = -x.^2;

%建立迴歸模型
model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');

%利用建立的模型看其在訓練集上的迴歸效果
[py,mse,prob] = svmpredict(y,x,model,'-b 0');
figure;%建立一個視窗
plot(x,y,'o');%原始資料以o這種形式標記
hold on;%保持當前影象不重新整理
plot(x,py,'r*');%迴歸資料以紅色的*標記
legend('原始資料','迴歸資料');%設定圖例線條
grid on;%畫圖的時候新增網格線

%進行預測
testx = [1.1;1.2;1.3];
display('真實資料');%控制檯輸出
testy = -testx.^2
[ptesty,tmse,prob2] = svmpredict(testy,testx,model,'-b 0');
display('預測資料');
ptesty

toc

以下是執行的正確結果:


至此,我第一個SVR例項就成功運行了。

相關推薦

學習筆記MATLAB+libsvm的SVR簡單例項

迴歸問題,個人理解是相當於有一個函式y=f(x)(也可能是n維的函式),這個函式可能是知道表示式,也可能不知道表示式。我們需要通過一組向量(x,y)進行訓練得到一個模型model,這個model也相當於是根據已知的訓練集(x,y),而得到的"f(x)表示式",然後使用測試集在

Flask學習筆記建立一個簡單的Flask應用

1. 做好準備工作進入專案主目錄啟用虛擬環境2. 建立app包:在flask中,含有名為 __init__.py 檔案的子目錄被視為包,可以被匯入。在命令列輸入以下命令,建立一個名為app的目錄:(venv) $ mkdir app在app目錄中建立一個名為__init__.

Python學習筆記變數與簡單I/O

變數(variable):用於引用(繫結)物件的識別符號。增量賦值運算子:累加:count=count+1 或者 count +=1識別符號(identifier)有其命名規則。標準(鍵盤)輸入:input標準(控制檯)輸出:print

tornado學習筆記wtforms-tornado簡單介紹

由於專案需要使用tornado做開發,文魚這幾天認真看了下tornado的文件和之前專案現在的程式碼,但我看到之前專案裡對post的驗證邏輯,文魚表示蛋很疼也表示理解。眾所周知,tornado和django的理念完全不同:一個精悍,一個大而全。不想django中

R in Action學習筆記一個簡單的資料處理例項

這是來自《R in Action》中的一個數據處理例項。 資料:一組學生的名字和其對應的數學、科學、英語的成績; 資料分析需求: 1、為所有學生確定一個單一的成績衡量指標; 2、將前20%的學生評定為A,接下來20%的學生評定為B,依次類推; 3、按照學生姓氏的字母順序對學生排序。

docker學習筆記簡單構建Dockerfile【Docker for Windows】

參考與入門推薦:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html#autoid-0-0-9 最近學習docker,寫一個簡單構建Dockerfile的筆記。 我的系統:Windows 10 Docker版本:Docker for Win

自動化學習筆記簡單元素操作

#清空文字 driver.find_element_by_id('idinput').clear() #模擬按鍵傳送 driver.find_element_by_id('idinput').send_keys('hh') #單擊元素 driver.find_e

Spark2.x學習筆記2、Scala簡單例子

2、 Scala簡單例子2.1 互動式程式設計spark-shell是Spark互動式執行模式,提供了互動式程式設計,邊敲程式碼邊執行,不需要建立程式原始檔,方便除錯程式,有利於快速學習Spark。[[email protected] spark-2.2.0]# bin/spark-shell U

Tensorflow學習筆記實現簡單的線性迴歸

#線性迴歸是什麼     y = w1x1 + w2x2 + w3x3 + w4x4 + ... + w_nx_n + bias     演算法:線性迴歸     策略:均方誤差   

Zookeeper學習筆記簡單註冊中心

  zookeeper可以作為微服務註冊中心,spring cloud也提供了zookeeper註冊中心的支援。   本文介紹如何實現一個簡單的zookeeper註冊中心,主要的實現方式: n個服務提供者對外提供http介面獲取資料,這些服務提供者把自己的主機、埠資訊註冊到zook

MATLAB學習筆記極大似然估計

極大似然估計的步驟: 1、寫出似然函式 2、對似然函式取對數,並整理 3、求導數 4、解似然方程 極大似然估計的Matlab命令mle呼叫格式: phat=mle(data) 返回服從正態分佈的資料引數的極大似然估計。 phat=mle(data,'distributi

kotlin學習筆記延遲載入的簡單介紹lateinit和lazy

在使用kotlin開發中,因為各種原因,我們會經常需要使用到延遲載入的功能,目前kotlin的延遲載入主要有兩種:lateinit和lazy lateinit 的使用 lateinit是kotlin中的

Robot Framework與Web介面自動化測試學習筆記簡單例子

一、自動化測試 與 人工測試 在開始編寫用例之前,我們先來思考下自動化測試和人工測試的區別。對於web頁面的人工測試,我們想下,如果去測試,怎麼操作呢?不外乎如下的基本動作: 1)開啟瀏覽器 2)輸入url (前提web伺服器要正常啟動執行著) 3)等待頁面顯示出

matlab學習筆記隨機模擬

按概率抽取元素        函式介紹: A是一個向量,代表各個元素的值,P是每個元素選中的概率,請自行保證概率和為1;返回值a是函式隨機抽取到的值。 function a = rand_select(A, P) p = rand(); i = 1;

學習筆記Qt與Matlab混合程式設計及遇到的諸多問題(附DEMO)

工具:MATLAB R2014b,Qt 5.6.1, 目標:通過MATLAB寫一個簡單的函式,生成動態連結庫DLL,再在Qt上呼叫 1.在MATLAB主頁新建一個函式 記住函式的名字和儲存的函式檔案的名字要相同,比如我寫了一個函式f,儲存時檔名需要是f.m 2.生

iptables學習筆記使用NAT實現簡單的無線AP

之前使用的是無線路由讓手機上網。學習了iptables後,嘗試在非openwrt系統的Linux上實現相同功能。本文簡單記錄一下。 手上有塊X86的板子,上面安裝了Linux系統。幾個月前研究了WIFI並實現了一個無線AP,最近又重新拾起了iptables,於是順便讓這個A

MATLAB學習筆記數列求和與級數

數列求和命令一:sum(x) 例1: x為向量: >> a=[1 2 3] a = 1 2 3 >> sum(a) ans = 6 例2: x為矩陣: >> b=[1 2 3;4

【10】Python學習筆記簡單的多級目錄(字典巢狀)

簡單的多級目錄(字典巢狀) # 建立多級目錄,具有增加節點,檢視節點,及返回上一級的功能 db = { '北京' : {}, '上海' : {}, '廣州' : { '天河區' : {}, '荔灣區' : {},

Linux學習筆記存儲管理

linux 磁盤管理 Linux系統中所有的硬件設備都是通過文件的方式來表現和使用的,我們將這些文件稱為設備文件,在Linux下的/dev目錄中有大量的設備文件,根據設備文件的不同,又分為字符設備文件和塊設備文件。字符設備文件的存取是以字符流的方式來進行的,一次傳送一個字符。常見的有打印

學習筆記javascript內置對象數組對象

b- sort splice 刪除 分隔 href 結果 join() strong 1.數組對象的創建 1.設置一個長度為0的數組 var myarr=new array(); 2.設置一個長度為n的數組 var myarr=new arr(n); 3.聲明一個