數學之路(3)-機器學習(3)-機器學習算法-SVM[7]

?

SVM是新近出現的強大的數據挖掘工具,它在文本分類、手寫文字識別、圖像分類、生物序列分析等實際應用中表現出非常好的性能。SVM屬于監督學習算法,樣本以屬性向量的形式提供,所以輸入空間是Rn的子集。

圖1

如圖1所示,SVM的目標是找到兩個間距盡可能大的邊界平面來把樣本本點分開,以”最小化泛化誤差“,即對新的樣本點進行分類預測時,出錯的幾率最小。落在邊界平面上的點稱為支持向量。Vapnik證明如果可以找到一個較小的支持向量集,就可以保證得到很好的泛化能力----也就是說支持向量的個數越少越好。

數據點通常在輸入空間是線性不可分的,我們把它映射到更高維的特征空間,使其線性可分----這里的映射函數我們稱之為核函數。特征空間的超平面對應輸入空間的一個非線性的分離曲面,因此稱為非線性分離器。

線性SVM分類器的輸出是u=w*x-b。w是分類平面的法矢,x是輸入向量,b是常量,u代表分類。即SVM的目的就是計算出w和b。最大化margin(兩個分類平面之間的距離)等價于求下面的二次優化問題:

?

對于非線性分類器就要把x映射到特征空間,同時考慮誤差ε的存在(即有些樣本點會越過分類邊界),上述優化問題變為:

?

從輸入空間是映射到特征空間的函數稱為核函數,LibSVM中使用的默認核函數是RBF(徑向基函數radial basis function),即

?

這樣一來就有兩個參數需要用戶指定:cgamma

?

我們先安裝python的機器學習庫

http://sourceforge.net/projects/mlpy/

該學習庫有以下3個核函數

1、‘linear’ (uT*v)

2、‘poly’ ((gamma*uT*v +coef0)^degree)

3、‘rbf’ (exp(-gamma*|u-v|^2)), ‘sigmoid’ (tanh(gamma*uT*v + coef0))
其中degree為 [int (for ‘poly’ kernel_type)] degree in kernel

下載并安裝后,調用 其中的SVM模塊對下面的數據進行訓練,這次訓練我們使用線性核做為SVM的核函數

?

x = [[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,0,0,1,0,0,1]
showpoint=['ro','bo']
tshowpoint=['r*','b*']
x=np.array(x)
y=np.array(y)
svm = mlpy.LibSvm()
svm.learn(x, y)



本博客所有內容是原創,如果轉載請注明來源

http://blog.csdn.net/myhaspl/


然后生成隨機的未知樣本測試數據驗證生成的SVM模型 ,星號表示未知樣本

?

?

#未知樣本分類
tlp_x1=np.random.rand(50)*(xmax-xmin)+xmin
tlp_x2=np.random.rand(50)*(ymax-ymin)+xmin
tlp_x=np.array(zip(tlp_x1,tlp_x2))
for ii in xrange(0,len(tlp_x)):ty=svm.pred(tlp_x[ii])if ty>0:plt.plot(tlp_x1[ii],tlp_x2[ii], tshowpoint[int(ty)])else:plt.plot(tlp_x1[ii],tlp_x2[ii], tshowpoint[int(ty)]) 

>>> runfile(r'K:\book_prog\mplsvm1.py', wdir=r'K:\book_prog')
http://blog.csdn.net/myhaspl
myhaspl@qq.com


loading ?...
>>>?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/252638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252638.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dalvik指令備忘

跳轉指令 if-eq vx, vy, 目標 如果vx vy注2&#xff0c;跳轉到目標。if-ne vx,vy, 目標 如果vx ! vy注2&#xff0c;跳轉到目標。 if-lt vx,vy, 目標 如果vx < vy注2&#xff0c;跳轉到目標。 if-ge vx, vy, 目標 如果vx > vy注2&#xff0c;跳轉到目標。 if-gt vx,vy, …

CPU、GPU、FPGA、ASIC等AI芯片特性及對比

1、前言 目前&#xff0c;智能駕駛領域在處理深度學習AI算法方面&#xff0c;主要采用GPU、FPGA 等適合并行計算的通用芯片來實現加速。同時有部分芯片企業開始設計專門用于AI算法的ASIC專用芯片&#xff0c;比如谷歌TPU、地平線BPU等。在智能駕駛產業應用沒有大規模興起和批量…

個人博客03

昨天編寫登錄界面、注冊界面的代碼。 今天依舊做這些。 遇到的問題為數據庫連接不上。轉載于:https://www.cnblogs.com/qilin20/p/8068555.html

人工智能Ai芯片層出不窮,GPU、FPGA、ASIC用于人工智能的優勢和劣勢對比

人工智能&#xff08;AI&#xff09;主要包括三大要素&#xff0c;分別是數據、算法和算力。其中數據是基礎&#xff0c;正是因為在實際應用當中的數據量越來越大&#xff0c;使得傳統計算方式和硬件難以滿足要求&#xff0c;才催生了AI應用的落地。而算法是連接軟件、數據、應…

dom和bom

先看幾個兩個例題&#xff1a; 星座對應日期&#xff1a; <select id"s1">   <option>a</option>   <option>b</option>   <option>c</option>   <option>d</option>   </select>   <se…

分享自己針對Automation做的兩個成熟的框架(QTP 和Selenium)

自己在google code中開源了自己一直以來做的兩個自動化的框架&#xff0c;一個是針對QTP的一個是針對Selenium的&#xff0c;顯而易見&#xff0c;一個是商業的UI automation工具&#xff0c;一個是開源的自動化工具。 只是代碼&#xff0c;可能你直接看的話&#xff0c;有點不…

全景視頻拼接關鍵技術

一、原理介紹 圖像拼接(Image Stitching)是一種利用實景圖像組成全景空間的技術&#xff0c;它將多幅圖像拼接成一幅大尺度圖像或360度全景圖&#xff0c;圖像拼接技術涉及到計算機視覺、計算機圖形學、數字圖像處理以及一些數學工具等技術。圖像拼接其基本步驟主要包括以下幾…

Part8 多態性 8.1運算符重載

1運算符重載的規則C 幾乎可以重載全部的運算符&#xff0c;而且只能夠重載C中已經有的。不能重載的運算符&#xff1a;“.”、“.*”、“::”、“?:”重載之后運算符的優先級和結合性都不會改變。 重載的兩種形式&#xff1a;   1 重載為類的非靜態成員函數&#xff1b;   …

H面試程序(29):求最大遞增數

要求&#xff1a;求最大遞增數 如&#xff1a;1231123451 輸出12345 #include<stdio.h> #include<assert.h> void find(char *s) {int maxleng 0;int length 1;int pos 0;int i 0;while(s[i] !\0){ if((s[i])<0||(s[i]>9)){assert(0);}if((s[i1]-0) &g…

reorder-list

/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*///思路:通過不同的首結點獲取到不同的尾結點,然后拼接public class Solution {public ListNode get…

四大主流芯片架構(X86、ARM、RISC-V和MIPS)

目前市場上主流的芯片架構有 X86、ARM、RISC-V和MIPS四種&#xff1a; 序號架構特點代表性的廠商運營機構發明時間1X86性能高&#xff0c;速度快&#xff0c;兼容性好英特爾&#xff0c;AMD英特爾1978年2ARM成本低&#xff0c;低功耗蘋果&#xff0c;谷歌&#xff0c;IBM&…

微博預計要火一陣的SleepSort之Shell及C實現

今日在微博看到如此奇妙的代碼。竟然還有新的sort算法&#xff0c;對于我這樣的渣渣必須研究一下&#xff0c;代碼例如以下&#xff1a; #!/bin.bash function f() {sleep "$1" //sleep 這么多secho "$1" }while [ -n "$1" ] //第一個參數不為空…

相關類以及常用方法

1、system&#xff1a;(系統相關類&#xff09; 常用方法&#xff1a; a) : system.arraycopy(制定數組&#xff0c;開始復制的位置&#xff0c;目標數組&#xff0c;開始粘貼的位置&#xff0c;需要復制的長度) 。 將指定源數組中的數組從指定位置復制到目標數組的指定位…

2021-11-15

本文將重點圍繞國產CPU的發展歷程與當前產業鏈各領軍企業的布局情況作詳盡解讀&#xff08;并包含特大號獨家整理的最新進展&#xff09;&#xff0c;具體如下&#xff1a; 1、國產CPU發展歷程回溯 2、飛騰&#xff1a;PK生態的主導者 3、鯤鵬&#xff1a;快速崛起的領導者 …

關于在ubuntu下配置AMD顯卡驅動的總結

同樣先卸載先前版本 代碼:sudo sh /usr/share/ati/fglrx-uninstall.sh代碼:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重啟 代碼:sudo reboot下載驅動&#xff0c;右邊直接有ubuntu32位和64位驅動鏈接&#xff1a;http://support.amd.com/en-us/do…

Python3中的hasattr()

Python3已經將此內置函數移除了。查閱Python v3.0 documentation發現可以使用 hasattr(object, name)內置函數來完成callable的功能&#xff0c;方式如下&#xff1a; 3.0之前&#xff1a;callable(func) 3.0之后&#xff1a;hasattr(func, __call__) 這兩者結果是相同的。 轉載…

計算機結構簡圖

北橋,南橋是主板上芯片組中最重要的兩塊了.它們都是總線控制器.他們是總線控制芯片.相對的來講,北橋要比南橋更加重要.北橋連接系統總線,擔負著cpu訪問內存的重任.同時連接這AGP插口,控制PCI總線,割斷了系統總線和局部總線,在這一段上速度是最快的.南橋不和CPU連接通常用來作I/…

原始Ajax

var $ { request:function(obj){ //1. 獲得xmlhttprequest對象兼容性處理 var xhr; //undefined未定義 try{ //主流瀏覽器里面的ajax對象 xhr new XMLHttpRequest(); }catch(e){ //IE低版本的瀏覽器 xhr new ActiveXObject("Microsoft.XMLHTTP"); } //2. 建立和…

Servlet 與 Ajax 交互一直報status=parsererror

Servlet 與 Ajax 交互一直報statusparsererror 原因&#xff1a;servlet 返回的數據不是 Json 格式 1、JS代碼為&#xff1a; 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遺及實例

投影 □ 遍歷數組索引&#xff0c;Select獲取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…