c 實現svm SVM演算法實現

2021-10-13 18:35:41 字數 1142 閱讀 8828

前面我們介紹了svm演算法的原理,這裡通過python以及小例子來實現svm演算法。這裡主要介紹兩個例子,乙個例子通過調包實現svm,乙個例子通過程式設計實現。

一、癌症資料集

資料來自國外某醫院癌症資料,資料量為100,劃分70條記錄用於訓練集,資料如下所示:

圖中diagnosis_result是癌症檢測結果,共兩類(m\b)。第一列為編號,其他列為特徵。

結果:訓練集準確率:0.8714285714285714

測試集準確率:0.8

二、mnist手寫資料集

mnist 資料集來自美國國家標準與技術研究所, national institute of standards and technology (nist). 訓練集 (training set) 由來自 250 個不同人手寫的數字構成, 其中 50% 是高中學生, 50% 來自人口普查局 (the census bureau) 的工作人員. 測試集(test set) 也是同樣比例的手寫數字資料。如下圖所示:

前面在knn實戰的時候介紹過類似的手寫資料集,這裡的手寫的處理方式和前面的手寫資料集是一樣的,即通過影象處理技術,將影象轉換為2進製資料。

在 mnist 資料集中的每張由 28 x 28 個畫素點構成, 每個畫素點用乙個灰度值表示. 所以,我們將28*28的畫素展開為一維行向量,每行784個特徵,每一行代表了一張手寫。

svm演算法**:檔名為svm_gausskernel.py

上面svm演算法**取自於:

該作者提供了《統計學習方法》書中涉及到的演算法的**,並且加入了大量的注釋,程式可讀性非常強。

下面載入mnist手寫資料集,因為資料集非常大,訓練資料集共60000行,測試資料集10000行,所以這裡實際使用訓練集1000行,測試集100行。

結果:the accuracy is:98 %

time span: 62.58473587036133

我們可以看到,基於高斯核函式的svm處理mnist手寫資料集效果非常好,測試集的分類準確率能夠達到0.98,但是也要注意的是,這裡載入資料集的時候,對於手寫數字為0的資料,將其標籤設定為1,其他數字的資料集,將其標籤設定為-1,即我們這裡處理的是二類分類問題。

A 演算法 c 實現

最近舍友突然說起a 演算法 雖然之前看過 但是我發現自己記得不是很清楚了 而且從來沒去手動實現過 趁著這次就實現一下加深理解 去網上查了下原理 看了幾篇別人的實現 然後按自己理解綜合一下寫出來記錄一下 我參考那篇程式執行有好幾個問題,而且執行得出路徑也是不對的,不知道他有沒跑過的。astar.h i...

c 實現rsa演算法 RSA演算法實現過程

rsa演算法是實現非對稱加密的一種演算法,其用到很多有關數論的內容,在此我們不多討論。而將目光聚焦於演算法的實現過程。rsa過程 第二步 計算n a b 61 53 3233 第三步 計算 a 1 b 1 60 52 3120 第四步 選擇與3120互質的乙個數e 17,這個e也就是我們的公鑰,需要...

SUNDAY 演算法 c 實現

public class sunday 實現sunday演算法 public int findchr string str,string sfind str length str.length fin length sfind.length while start fin length str le...