深度學習工具箱

的Matlab工具箱深度學習。
深學習是機器學習,重點學習數據深層次模型的一個新的子域。 它是由人腦的深視(分層,分級)架構的啟發。 深學習理論的理論的一個很好的概述是學習的AI深架構

對於更正規的介紹,請參閱杰弗裡·辛頓和安德魯伍以下視頻。

如果您在您的研究用這個工具箱請引用:

預測作為學習數據的深層次模型(棕櫚,2012)候選人

包括在工具箱目錄
NN / – 一種前饋BP神經網絡圖書館

美國有線電視新聞網/ – 用於卷積神經網絡圖書館

DBN / – 用於深層信念網絡圖書館

SAE / – 一個堆疊自動編碼器庫

CAE / – 用於卷積自動編碼器庫

UTIL / – 由圖書館的實用功能

數據/ – 通過實施例中使用的數據

測試/ – 單元測試,以驗證工具箱工作

對於每個庫檢查引用REFS.md

https://github.com/rasmusbergpalm/DeepLearnToolbox

mathworks.com/matlabcentral/fileexchange/38310-deep-learning-toolbox


深度學習研究小組

一些實驗室,並正在積極致力於深度學習研究小組:

多倫多大學- 機器學習組 (杰弗裡·辛頓,豐富澤梅爾,魯斯蘭Salakhutdinov,布倫丹·弗雷,雷德福尼爾)

蒙特利爾大學- 米拉實驗室 (Yoshua Bengio,帕斯卡爾文森特,亞倫庫維爾,羅蘭Memisevic)

紐約大學- 晏Lecun羅布宏泰 ,大衛·桑塔格和Kyunghyun卓

斯坦福大學- 安德魯·吳克里斯托弗·曼寧的, 菲菲李的組

牛津大學- 深學習小組南多·德弗雷塔斯菲爾Blunsom ,安德魯Zisserman

谷歌研究 -傑夫院長,杰弗裡·辛頓,薩米Bengio,伊利亞Sutskever,伊恩·古德費洛,奧里奧爾Vinyals,杜米特魯埃爾汗,富國樂等人

谷歌DeepMind -亞歷克斯墳墓,卡羅爾格雷戈爾,科瑞Kavukcuoglu,舍甫琴科Mnih,紀堯姆德斯賈丁斯,澤維爾Glorot,勒茲萬Pascanu,沃洛Mnih等

Facebook的AI研究(FAIR) -晏Lecun,羅布宏泰,賈森·韋斯頓,安托萬·博爾德,Soumit Chintala,萊昂Bouttou,羅南Collobert,晏芬等。

Twitter的深度學習小組 – 雨果拉羅歇爾,萊恩·亞當斯,克萊門特Farabet等

微軟研究院- 麗登

SUPSI – IDSIA尤爾根施米德休的研究小組)

加州大學伯克利分校- 布魯諾Olshausen的小組, 特雷弗·達雷爾的小組, 彼得Abbeel

加州大學洛杉磯分校- 艾倫Yuille

華盛頓大學- 佩德羅多明戈斯 “組

IDIAP研究所- 羅南Collobert的組

加州大學默塞德分校- 米格爾A. Carreira的-Perpinan的組

赫爾辛基大學- 阿姆哈拉人民許韋里寧的神經信息學組

舍布魯克大學- 雨果拉羅歇爾的組

圭爾夫大學- 格拉漢姆-泰勒的研究小組

密西根大學- Honglak利的小組

柏林工業大學- 克勞斯-羅伯特·穆勒的研究小組

百度- 凱譽的和安德魯·吳的研究小組

阿爾托大學- 尤哈卡亨南和塔帕尼賴光

U.阿姆斯特丹- 馬克斯威靈的組

CMU – 克里斯代爾

U.加州大學歐文- 皮埃爾·巴爾迪的組

根特大學- 本傑明Shrauwen的組

田納西大學- 伊塔馬爾阿雷爾的組

IBM研究中心- 布萊恩·金斯伯里

波恩大學- 斯文貝肯的

蓋茨比單位 @英國倫敦大學學院- Maneesh Sahani,彼得·達揚

計算認知神經科學實驗室的科羅拉多州博爾德大學@

深度學習軟件


  1. Theano – CPU / GPU表情符號編譯器在Python(從蒙特利爾大學MILA實驗室)
  2. 火炬 -提供LUA的國家的最先進的機器學習算法Matlab的樣環境(從羅南Collobert,克萊門特Farabet和科瑞Kavukcuoglu)
  3. Pylearn2 – Pylearn2是設計,使機器學習研究易出庫。
  4. -訓練神經網絡的Theano框架
  5. Tensorflow – TensorFlow™是數值計算用數據流圖一個開源軟件庫。
  6. MXNet – MXNet是一種深深的學習框架設計為效率和靈活性。
  7. 來自Caffe -Caffe是mind.Caffe與表達,速度和模塊進行了深入的學習框架與表達,速度和模塊化心中留下了深刻的學習框架。
  8. 千層面 -意大利千層面是一個輕量級庫Theano建立和訓練神經網絡。
  9. Keras -基於theano深度學習庫。
  10. 深度學習教程 -如何深度學習與Theano例子(從LISA實驗室在蒙特利爾大學)
  11. DeepLearnToolbox -的Matlab工具箱深度學習(從拉斯穆斯伯格棕櫚)
  12. CUDA的Convnet -一個快速的C ++ / CUDA實現卷積(或更一般,前饋)神經網絡。 它可以模擬任意層連通性和網絡的深度。 層的任何向無環圖就行了。 培訓採用反向傳播算法完成的。
  13. 堅定信念網絡 學習堅定信念網絡Matlab代碼(從魯斯蘭Salakhutdinov)。
  14. RNNLM -托馬斯Mikolov的回歸神經網絡基於語言模型工具包。
  15. RNNLIB -RNNLIB是序列學習問題的回歸神經網絡庫。 適用於大多數類型的時空數據的,它已被證明為語音和手寫識別特別有效。
  16. matrbm 簡化的魯斯蘭Salakhutdinov的代碼版本,在Andrej Karpathy(Matlab的)。
  17. deeplearning4j – Deeplearning4J是Apache 2.0授權,開源,分佈式的神經網絡用Java編寫的Scala庫。
  18. 估計RBM的分區的功能 估計受限玻爾茲曼機的分區功能Matlab代碼使用退火重要性抽樣(從魯斯蘭Salakhutdinov)。
  19. 學習深玻爾茲曼機用於訓練和微調深玻爾茲曼機(從魯斯蘭Salakhutdinov)Matlab代碼。
  20. LUSH編程語言和開發環境,用於@ NYU深卷積網絡
  21. Eblearn.lsh是做好能源為基礎的學習基於LUSH,機器學習庫。 它包括無監督學習的“預測稀疏分解”代碼和其他稀疏自動編碼器的方法。 科瑞Kavukcuoglu這幾個深度學習的論文提供Eblearn代碼
  22. deepmat – Deepmat,基於MATLAB深度學習算法。
  23. MShadow – MShadow是一個輕量級的CPU / GPU矩陣/ ++張量 ​​模板庫中的C / CUDA。 mshadow的目標是支持機器學習項目,目的是為簡單和性能有效的,設備不變的並且簡單張量庫。 支持CPU / GPU /多GPU和分佈式系統。
  24. CXXNET – CXXNET快速,簡潔,分佈深度學習的基礎上MShadow框架。 它是一種重量輕,易於擴展的C ++ / CUDA神經網絡工具包與友好的Python / Matlab的接口,用於訓練和預測。
  25. Nengo -Nengo是一個圖形化和腳本編寫基於軟件模擬的大規模的神經系統。
  26. Eblearn是基於能量學習,卷積網絡,視覺/識別應用等EBLearn一個BSD許可證由主要是保持了C ++學習機庫皮埃爾Sermanet在紐約大學。
  27. cudamat是一個用於Python的基於GPU的矩陣庫。 訓練神經網絡和受限玻爾茲曼機示例代碼包含。
  28. Gnumpy是一個Python模塊,在幾乎相同numpy的一種方式接口,但會在您的計算機的GPU計算的。 它運行在cudamat之上。
  29. CUV圖書館 (GitHub的鏈接 )是Python綁定的矩陣易用的NVIDIA CUDA功能的C ++框架。 它包含一個RBM的實施,以及退火重要性抽樣碼和代碼(從準確計算功能分區AIS實驗室在波恩大學)。
  30. 3路分解RBMmcRBM是Python代碼調用CUDAMat訓練自然圖像模式(從Marc’Aurelio Ranzato)。
  31. 為培養Matlab代碼條件RBMS /動態Bayesian分解條件RBMS (從格拉漢姆-泰勒 )。
  32. 器MPOT是使用CUDAMat和gnumpy訓練自然圖像模型(Python代碼Marc’Aurelio Ranzato )。
  33. neuralnetworks對深學習算法是一個基於Java的GPU庫。
  34. ConvNet是一個基於MATLAB的卷積神經網絡工具箱。
  35. Elektronn是一種深度學習工具包,使強大的神經網絡訪問的機器學習領域外的科學家。
  36. OpenNN是寫在它實現了神經網絡,深度學習研究的一個主要領域的C ++編程語言的開源類庫。
  37. NeuralDesigner是預測性分析的創新深刻的學習工具。

數據集

這些數據集可用於深標杆學習算法:

象徵音樂數據集


自然意象


人工數據集


文本


言語


推薦系統

  • MovieLens:可以從兩個數據集http://www.grouplens.org 第一個數據集有1682電影943的用戶,分為5不相交的子集10萬的收視率。 第二個數據集有3900電影由6040用戶約100萬的收視率。
  • 傑斯特:該數據集包含410萬,從73421用戶100笑話連續額定值(-10.00至+10.00)。
  • Netflix的獎:Netflix公司發布了自己的電影分級的匿名版本的數據集 ; 它包括100萬的收視,由誰評價1,所有的17770電影之間的48萬用戶完成。
  • 圖書交叉數據集:此數據集是從書道口社區,並包含278858用戶提供1149780收視率約271379書籍。

雜項


圖像分割MATLAB源代碼

適合初學者,這個演示說明了簡單的目標檢測(分割,特徵提取),測量和過濾。 需要圖像處理工具箱(IPT),因為它展示了由該工具箱提供的一些功能,再加上它使用了與工具箱提供的“硬幣”的試玩影像。 如果你有IPT,你應該能夠簡單地通過複製來運行這個演示代碼,將此代碼粘貼到一個新的編輯器窗口,然後點擊綠色的“運行”三角形(您可以通過在命令行中鍵入版本檢查)工具欄。
首先找到的所有對象,然後過濾的結果,挑選出一定大小的物體。 閾值,標籤和regionprops的​​基本概念是展示一個簡單的例子。

這對於那些新的MATLAB的圖像處理能力學習上的用戶一個很好的教程,他們去到更複雜的算法之前。

http://nl.mathworks.com/matlabcentral/fileexchange/25157-image-segmentation-tutorial

細胞分割軟件工具

軟件工具

開發人員

COM

網站

CellProfiler

Broad研究院

沒有

的http:// WWW cellprofiler有機

OMAL工具箱

弗雷德里克國家實驗室

沒有

的http:// ncifrederick癌症GOV

馬賽克軟件

馬賽克組

沒有

HTTP:// WWW馬賽克瑞士聯邦理工學院CH /下載/ phasecontrast。

LSDCAS

愛荷華大學

沒有

HTTP:。?// WWW uihealthcare組織/ otherservices ASPX ID = 21022

CellTrack

中東

沒有

db.cse.ohio-state.edu/CellTrack

技術大學

冷冰冰

法國巴斯德研究所

沒有

icy.bioimageanalysis.org

CyteSeer

瓦拉科學

HTTP:// WWW valasciences COM /軟件/ ID / cyteseer

Cellomics公司

Thermo Scientific的

HTTP:// WWW Cellomics公司融為一體。

敏銳

TTP萊伯泰科

HTTP:// WWW ttplabtech融為一體。

表觀遺傳學目標

Evotec

HTTP:// WWW evotec融為一體。

剖析

在IN Cell調查

GE醫療集團

HTTP:// WWW BIACORE融為一體。

和諧

珀金埃爾默

HTTP:// WWW珀金埃爾默融為一體。

CellScan LS

Imstar

HTTP:// WWW imstarsa ​​融為一體。

iCyte

是CompuCyte

HTTP:// WWW是CompuCyte融為一體。

COM =商業化。


MATLAB歸削減分割代碼

歸剪切圖像分割和集群代碼這裡下載
線性時間多尺度歸一化剪切圖像分割MATLAB代碼,請在這裡下載


經過有損壓縮聚類和分類

MATLAB包可用如下:

所有代碼的版權2007伊利諾伊大學。

多元混合數據聚類

matlab程序包: segmentation_code.zip

用法很簡單:如果X是數據矩陣(列的形式),調用
Y = coding_seg(X,ε,FALSE);
將段相關的數據,以便最小化所需的比特數
編碼失真高達小量^ 2的數據載體。 最後一個參數
如果數據是已知的非零均值應該是真實的。 請參閱“test.m”
一個例子。

聯繫方式: 約翰·賴特 (jnwright@uiuc.edu)。

多元數據分類

matlab程序包:MICL_code.zip

聯繫方式: 約翰·賴特 (jnwright@uiuc.edu)

自然圖像分割

matlab程序包: tbes_1.0.zip

安裝:這紋理分割算法使用的超像素代碼森等人 ,其中包括需要編譯一些C文件。 要做到這一點打開MATLAB然後運行以下命令:
> CD超像素/ yu_imncut> MEX csparse.c> MEX ic.c> MEX imnb.c> MEX parmatV.c> MEX spmd_imncut.c用法:為了測試我們的紋理分割算法,在MATLAB中運行以下命令:
> test_texture_seg

REF:http://perception.csl.illinois.edu/coding/sample_code.htm



 

輪廓檢測和圖像分割資源

 

這項工作的目的是為圖像分割和邊界檢測研究提供了實證依據。 為了促進視覺分組學習科學的進步,我們提供了以下資源:

    • 大型數據集自然圖像已手動分割。 人類註釋作為地面實況學習分組線索以及用於比較不同的分割和邊界檢測算法的基準。
    • 最新的算法,本集團已為輪廓檢測和圖像分割開發。

在此頁中可用的完整資源可下載為單個文件 (更新2013年1月)

詳細信息和個人下載,請您below.If在此頁面中使用的資源,請引用的文件:

輪廓檢測和層次圖像分割
P.阿韋拉埃斯,M.邁爾,C Fowlkes和J.馬利克。
IEEE TPAMI,卷。 33,第5號,第898-916,2011年5月。
[PDF] [中文提供]

伯克利分割數據集和基準500(BSDS500)

這個新數據集是的延伸BSDS300 ,其中原始300圖像用於訓練/驗證和200新鮮的圖像,與人類註釋一起被用於測試加入。 每幅圖像被平均五個不同的主題進行分割。 性能是由檢測邊界和另外三個基於區域的指標測量精度/召回評估。

原始圖像 主題1 主題2 主題3

最佳實踐指南:該數據集包含500自然的圖像,地面真理的人註解和基準測試代碼。 這些數據明確地分成不相交的火車,驗證和測試的子集。 為了保持評價的完整性並獲得你的結果與現有方法的直接和公平的比較,下面的指導方針,必須遵循:

    • 列車只在trainval:所有的學習,參數整定,模式選擇等應完全對數據的火車和驗證的子集來完成。
    • 在測試運行一次:訓練結束後,你的算法應該只有一次,而數據的測試子集固定的參數運行。 試驗組的圖像和地面真分割不能用於調諧的算法。
    • 報告所有評估結果:評估在測試子集與基準測試代碼結果。 為了評估的輪廓檢測和分割算法性能的定量不同的方面,BSDS500提供了一套評價方法。 請報告通過評估腳本boundaryBench(輪廓檢測方法)或allBench(分割方法)返回的所有成績和曲線。
    • 還評估對BSDS300:為了使您的結果與原來的BSDS300進行評估的方法相同,你應該重複上述三個步驟,但要確保只對數據的訓練集和測試的驗證子集訓練

下載 BSDS500圖像,地面實測數據和基準。


算法

最近我們的方法集團的發展。

    • 輪廓檢測 輪廓檢測globalPb結合多個本地線索到基於譜聚類全球化框架。
    • 分層圖像分割 通用分割算法OWT-UCM將任何輪廓檢測器的輸出到一個分層的區域樹。
    • 交互式分割工具 Matlab的接口從我們的自動結果生產出高品質的用戶指定的分割。
原始圖像 globalPb 超度量等值線圖 自動分割

下載:

 

 

 

注:本網頁所有下載都可以在同一個文件夾安全地壓縮。

REF:http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/resources.html


k均值圖像分割

這個程序獲取的圖像和分區的desidered數​​量,發現不同類別的手段,並提供免費無可比擬的性價比形象
(面具)。

REF:http://nl.mathworks.com/matlabcentral/fileexchange/8379-kmeans-image-segmentation


模糊C均值聚類

這個函數說明了圖像的模糊C均值。 它會自動分割圖像與隨機初始化n個集群。 簇的數目可以由用戶來指定。 迭代次數也可以被控制。 功能輸出分割圖像和更新的集群中心。

http://nl.mathworks.com/matlabcentral/fileexchange/56147-fuzzy-c-means-clustering


使用形態分割

這個函數說明了圖像的模糊C均值

這個函數說明了圖像的模糊C均值。 它會自動分割圖像與隨機初始化n個集群。 簇的數目可以由用戶來指定。 迭代次數也可以被控制。 功能輸出分割圖像和更新的集群中心。


植物葉部病害檢測,並使用多類SVM分類分類

一個MATLAB代碼來檢測和分類在植物病害使用多類SVM分類葉

一個MATLAB代碼寫入到葉分為以下幾種類型之一:“孢”,“炭疽病”,“白葉枯病”,“角斑病”和“健葉”。分類是由多類SVM完成(一個或全部)
如何運行?
1.將文件夾“Leaf_Disease_Detection_code’在Matlab路徑,並添加所有子文件夾到該路徑
2.運行DetectDisease_GUI.m
3.在GUI中點擊加載圖像並載入從馬努的疾病數據集的圖片,點擊增強對比度。
4.圖像分割下一步點擊,然後輸入集群沒有包含的投資回報率,即只有疾病影響部分或健康部分
5.單擊分類結果。 然後測量精度(在此情況下的健康VS所有疾病)。
該代碼是鬆散的基礎上以下紙張,請舉出以下,並給予信貸作者:
[1]阿赫塔爾阿斯瑪,等。 “自動化植物病害分析(APDA):機器學習技術的性能比較。”信息技術(FIT),2013第11屆國際會議上邊界。 IEEE,2013。
[2]多類SVM阿南德·米甚拉鏈接: http://www.mathworks.com/matlabcentral/fileexchange/33170-multi-class-support-vector-machine

http://nl.mathworks.com/matlabcentral/fileexchange/55098-plant-leaf-disease-detection-and-classification-using-multiclass-svm-classifier



MATLAB免費的代碼:

sparse_classification.zip (第1版:2013年9月;最後發布:2013年9月)

用於使用各種不同的稀疏編碼算法,包括PC / BC-DIM算法模式識別的MATLAB代碼。 :此代碼執行中所描述的實驗中使用稀疏表示兆瓦Spratling(2014) 分類:生物合理方法控制論生物,108(1):61-73。

drivers_modulators.zip (第1版:2013月;最後發布:7月2013)

用於模擬兩個調節和行車前饋,橫向和自上而下連接的影響與PC / BC-DIM模型MATLAB代碼。 這個碼執行在所描述的實驗: MW Spratling(2014) 在皮質 [計算神經科學,36(1) 驅動器和調製器的單一功能模型:97-118。

edge_detection.zip (第1版:2012年10月;最後發布時間:Oct 2012)

使用V1的PC / BC-DIM模型橫向連接進行圖像分割MATLAB代碼。 此代碼執行中描述的實驗: 。MWSpratling(2013) 使用皮質區V1的稀疏編碼模型圖像分割圖像處理IEEE交易,22(4):1631年至1643年。

partial_transforms.zip (1日發布:2012年5月;最後發布:2012年5月)

使用PC / BC-DIM模型建模局部坐標系轉換的MATLAB代碼。 這種代碼執行中描述的實驗中: K。 德•梅耶爾和MW Spratling(2013) 部分參考幀的模式轉變,通過增益調製反應池大腦皮層,23(5):1230-9。

v1_reverse_correl.zip (1日發布:2012年1月;最後發布:2012年1月)

使用V1的PC / BC-DIM模型建模反向相關性實驗MATLAB代碼。 這個碼執行在所描述的實驗: MW Spratling(2012) 預測編碼量佔使用逆轉錄相關記錄,V1反應特性生物控制論,106(1):37-49。

v1_saliency.zip (1日發布:2011年7月;最後發布時間:2011年7月)

使用PC / BC-DIM模型建模視覺顯著性的MATLAB代碼。 此代碼執行中描述的實驗: MW Spratling(2012) 預測編碼為V1顯著圖的假設神經網絡,26個模型:7-28。

dim_learn_recip_weights.zip (第1版:2011年6月;最後發布時間:2011年6月)

在分層PC / BC-DIM模型學習MATLAB代碼。 該模型適用於學習吧的問題,並利用自然的圖像學習。在後一種情況下RFS類似於在皮質區V1和V2發現被學習。 這個碼執行在所描述的實驗: MW Spratling(2012) 在皮質功能的預測編碼模型神經計算,24(1) 編碼要素圖像分量生成和判別權重的無監督學習:60-103。

gain_modulation.zip (第1版:2011年3月;最後發布:2011年3月)

用於學習(使用DIM算法),其中一個輸入被驅動射頻和其他調節,從而產生了類型不同的皮層區觀察到“增益場”的(例如,當視網膜RF由眼睛位置調製)MATLAB代碼。 這種代碼執行中描述的實驗中: K。 。1536年至1567年:德•梅耶爾和MW Spratling(2011) 乘增益調製的皮質功能的預測編碼模型神經計算,23(6) 通過產生無監督學習

v1_suppression_mechanisms.zip (第1版:2011年3月;最後發布:2011年3月)

使用PC / BC-DIM模型建模V1抑制機制MATLAB代碼。 此代碼執行中描述的實驗: MW Spratling(2011) 單功能模型佔抑制皮層區域V1視覺研究,51不同的特性:563-76。

v1_response_properties.zip (第1版:2010年2月;最後發布:2010年3月)

使用PC / BC-DIM模型建模V1簡單細胞的RF性能MATLAB代碼。 此代碼執行中描述的實驗: MW Spratling(2010) 預測編碼為響應特性的皮質區V1神經科學學報,30(9) 模型:3531-43。

pc_attention.zip (第1版:2010年2月;最後發布:2010年2月)

建模視覺注意力和使用PC / BC-DIM模型綁定MATLAB代碼。 這個碼執行在所描述的實驗: MW Spratling(2008) 預測編碼作為偏置競爭的視覺注意模型視覺研究,48(12):1391-408。

dim_squares.m (第1版:2010年2月;最後發布:2010年2月)

使用分裂輸入調製(DIM)算法學習的平方問題MATLAB代碼。 該代碼的執行中所描述的任務之一:MW Spratling,K.德•梅耶爾和R.康帕斯(2009) 使用重疊的輸入分裂調製計算智能與神經科學,2009 – (381457) 的圖像成分的無指導的學習:1-19。

REF:http://www.inf.kcl.ac.uk/staff/mike/code.html



前形狀的圖像分割

使用流形學習之前統計形狀

與阿圖羅門多薩Quispe醫師的聯合工作

在這項工作中,我們建立了一個統計事先使用流形學習技術(擴散地圖)以及包含在一個圖形切割框架。 我們使用流形學習描述的方法在形狀根據之前的圖像分割,A. 門多薩Quispe醫師和C珀蒂讓,在接受IEEE IPTA ,2015年PDF版

對心臟磁共振圖像的右心室分割的一些結果:

imgsegm

MATLAB代碼:我們的分段代碼是可用在這裡 該代碼是用Matlab版本8的圖像處理工具箱兼容。

它需要使用下面的代碼:

我們的檔案有密碼保護; 請向在caroline.petitjean密碼[在] univ-rouen.fr。

請注意:該代碼 是沒有數據提供。 該代碼是在上述論文[門多薩Quispe醫師和珀蒂讓,2015年]描述的算法實現的一個命題 他«如同»沒有任何支持,也沒有保修,不能保證完全無缺陷。 我們感謝我們的論文的引文情況下使用的代碼。

主要參考文獻:

  • Etyngier,P.,Ségonne,F.,Keriven,R .:使用歧管學習技術形態前科。 在計算機視覺,2007年ICCV 2007年第11屆IEEE國際會議上。 第1 8,IEEE(2007)
  • Moolan-費羅茲,澳,Mirmehdi,M.,漢密爾頓,M.,Bucciarelli-Ducci酒店,採用雙奔放的地圖和馬爾可夫隨視場連接右心室Ç:分割。 在:醫學影像計算和計算機輔助介入MICCAI 2014年,第682 689.施普林格(2014年)

圖割的圖像分割與多標記統計形狀前

與達米安Grosgeorge和共同工作蔌如廠

Matlab代碼:

  • 即將提供

主要參考文獻:

  • D. Grosgeorge,珀蒂讓C.,S阮,左,右心室聯合分割使用多標籤圖​​割,IEEE國際研討會生物醫學成像(ISBI’14),2014年,北京,中國
  • D. Grosgeorge,珀蒂讓C.,J.-N. Dacher,S.阮。 圖切分割與心臟MRI統計形狀模型,計算機視覺和圖像理解,第一卷。 117,第 1027年至1035年,2013。
  • D. Grosgeorge,珀蒂讓C.,S阮,J.高德隆,J.-N. Dacher。 右心室分割由圖之前切割形狀。MICCAI國際研討會,右心室分割挑戰,2012。

處理腦電圖MATLAB代碼(EEG)和腦磁圖(MEG)數據

跨國公司是一個社區驅動的軟件設計用於處理腦電圖(EEG)和腦磁圖(MEG)數據提供全面的工具和工作流程為:

  1. 預處理
  2. 來源估計
  3. 時間 – 頻率分析
  4. 統計測試
  5. 功能連接估算
  6. 應用機器學習算法
  7. 無傳感器和源空間數據可視化

跨國公司包括一個全面的Python包(根據簡化BSD許可提供),由C代碼編譯的Linux和Mac OSX操作系統,以及一個MATLAB的工具為輔。

下載鏈接 :

https://github.com/mne-tools/mne-matlab

來源鏈接:

http://martinos.org/mne/stable/index.html

的Matlab工具箱與通用數據模型數據集進行操作

小結:

nctoolbox是一個Matlab的工具箱,提供了只讀訪問公共數據模型的數據集。 引擎蓋下,nctoolbox使用的NetCDF Java的作為數據訪問層。 這使得nctoolbox訪問的NetCDFOPeNDAPHDF5 ,GRIB,GRIB2,HDF4和許多(15歲以上)使用相同的API等格式的文件和服務。

文檔

該故事的其餘部分

有可用於讀取數據的幾個數據集類。 每個提供不同類型的功能。 所有數據集類提供了訪問變量數據,變量名的列表,並創建NetCDF屬性以及底層的NetCDF Java的DataSet對象。 大多數用戶都希望使用NCGEODATASET,最近的類,因為這足以給訪問geovariable班上唯一的類。 這使得通過子集緯度/經度的值,用時間和恢復使用的時間標準名稱坐標的能力窗戶,緯度,經度,Z為每個數據集變量(甚至是執行坐標轉換)。 這個類也有拉從一個netCDF文件屬性到一個方便的MATLAB結構的方法,另一個拉動坐標的範圍。 年長NCDATASET和CFDATASET類大多保留向後兼容。

利用Matlab EyeTribe跟踪器

關於

該EyeTribe MATLAB工具箱是一套可以用來與製造眼球跟踪器進行通信的功能的EyeTribe 在通信過程是不直接的,而是通過從Matlab的(當從這個工具箱中的函數調用)接收輸入一個子服務器當機,然後將命令發送到實際EyeTribe服務器。

這種設置是相當奇怪的,但它是最優雅的解決方案,我可以拿出來解決Matlab中沒有像樣的多線程功能的問題。 此功能是必需的用於運行心跳線程(其保持與EyeTribe活著的連接),而另一螺紋監測樣品(並將它們寫入一個日誌文件)。 類似的結果可以通過使用Matlab的TCP / IP協議的框架內的回調函數來獲得,但這種方法會導致時序程度成其它域的錯誤:在使用期間的問題時PsychToolbox的WaitSecs功能,和後台進程在Matlab擰上各種其它定時敏感過程。

因此,出於lazine的……呃……出精心策劃的時間管理工作通過重新發明輪子,以避免時間上的損失,我只是用PyTribe在很短的Python腳本(見python_source為源文件夾)編譯一個Windows可執行文件,你應該運行之前運行MATLAB腳本。

校準程序是基於PsychToolbox Matlab的,並且需要被傳遞到它的活動窗口。 這保證了你可以自由地跟踪在實驗中的任何給定的時刻校準,而不必與實驗活動顯示控制任何外部校準例程戰鬥。

如果你不想使用PsychToolbox校準,你仍然可以使用EyeTribe MATLAB工具箱,用根本不調用eyetribe_calibrate功能。 請你注意,你應該那麼系統用自己的手段,例如,通過使用EyeTribe自己的GUI校準( C:\Program Files (x86)\EyeTribe\Client\EyeTribeWinUI.exe)起於EyeTribe工具箱調用任何軟件之前 Matlab的。

重要

使用Matlab的工具箱EyeTribe人群中一個非常普遍的假設是,調用示例函數是一個要求。 這是不是真的! 打完電話後eyetribe_start_recording可執行文件(EyeTribe_Matlab_server.exe)將確保數據將被寫入日誌文件。 調用eyetribe_stop_recording將停止數據記錄。eyetribe_sampleeyetribe_pupil_size功能無關的數據記錄!

那麼,為什麼他們在那裡? 嗯,有時候你想使用方面的參與者的角度來改變屏幕上的東西,或提供反饋。 為此,你可以調用eyetribe_sample獲得最新的目光坐標。 這些可以被用來設置一個刺激的位置(例如將其鎖定凝視位置),或監視參與者是否正在尋求一定的刺激。

總之, eyetribe_sampleeyetribe_pupil_size功能有支持凝視特遣隊顯示。 它們涉及到數據的記錄:在後台可執行運行將在後台處理此,存儲在文本文件中的注視和瞳孔數據。

下載

1)進入: https://github.com/esdalmaijer/EyeTribe-Toolbox-for-Matlab

2)按下載ZIP按鈕,或者點擊這個直接的聯繫

3)解壓剛才下載的ZIP檔案。

4)複製的文件夾EyeTribe_for_Matlab到你希望它是(如Documents文件夾中,MATLAB下)。

5)在Matlab中,轉到文件- >設置路徑- >添加文件夾並選擇你步驟4中複製的文件夾。

另外,下面的代碼放置在實驗的開始:

  %假設你放在EyeTribe_for_Matlab直屬C:
 addpath('C:\ EyeTribe_for_Matlab')

用法ON WINDOWS

  1. 啟動EyeTribe服務器C:\Program Files(x86)\EyeTribe\Server\EyeTribe.exe
  2. 啟動EyeTribe_Matlab_server.exe
  3. 運行MATLAB腳本,例如下面:

用法在OS X和Linux

感謝@ shandelman116的嘗試了這一點(見問題#4 )。

  1. 打開一個終端。
  2. 使用cd功能轉到python_source文件夾。 一個例子:
 cd /home/python_source
  1. 使用Python來運行源。 Python中應安裝在任何Linux系統上,我認為OS X通常有它。 在Terminal中輸入下面的命令:
 python EyeTribe_Matlab_server.py
  1. 現在(從Python腳本的兩分鐘內,但做到這一點,因為它會之後超時)運行MATLAB腳本。

示例腳本

  %不垂直同步測試這個演示打擾
屏幕('偏好','SkipSyncTests',1);

 %初始化連接
 [成功連接] = eyetribe_init('測試');

 %打開一個新窗口
 窗口 =屏幕('OpenWindow',2);

 %校準跟踪器
成功= eyetribe_calibrate(連接, 窗口 );

 %顯示空白窗口
屏幕(“翻轉”, 窗口 );

 %開始錄製
成功= eyetribe_start_recording(連接);

 登錄%的東西
成功= eyetribe_log(連接,'TEST_START');

 %得到一些樣本
 %注:這是沒有必要的數據記錄和
 %徵收,而只是一個樣品展示
 %和pupil_size功能!
 對於 i = 1:60
     暫停 (0.0334)
     [成功,X,Y] = eyetribe_sample(連接);
     [成功, 大小 = eyetribe_pupil_size(連接);
     DISP(['X ='num2str(X)',Y ='num2str(Y)',S ='num2str( 大小 )])
 結束

 登錄%的東西
成功= eyetribe_log(連接,'TEST_STOP');

 %停止錄製
成功= eyetribe_stop_recording(連接);

 %密切相關
成功= eyetribe_close(連接);

 % 關閉窗口
屏幕('關閉',  );

MATLAB工具箱幾何處理

gptoolbox – 幾何處理工具箱

https://github.com/alecjacobson/gptoolbox/

這是有用的MATLAB函數幾何處理的工具箱。 也有有關constrainted優化和圖像處理工具。 通常,這些是不是獨立的應用程序的實用功能。

下面是這個MATLAB工具箱包含很酷的功能不完全名單:

  • 包裝為TetGen,三角,QSlim,meshfix
  • 網格平滑
  • 網清理(刪除重複,刪除未引用)
  • 在三角和四面體網格測量距離
  • 目數量和查詢(法線,離散高斯曲率,清單邊界邊,拓撲結構,角度,二面角等)
  • 網格變形(如剛性-AS-可能(ARAP),移動最小二乘等)
  • 網格參數(諧波,最小二乘形,ARAP等)
  • 自動蒙皮權重計算(有界雙調和權重,骨熱)
  • 從二值圖像的二維三角形網格
  • 對於很多網格式輸入/輸出(OBJ,.off,.STL,.WRL,.ply,.mesh,.node,.ele,.poly,.smf,.bdl,人臉)
  • 離散微分幾何運營商三角形和四面體網格(餘切拉普拉斯,梯度,散度)
  • 二次規劃,有效集求解
  • 基於塗鴉圖像著色,擴散曲線
  • 精確(UN)簽訂距離場計算的網格
  • 在網格構造實體幾何運算,布爾
  • 三角形和四面體網格加速點位置
  • 圖像抖動
  • 深MATLAB函數依賴

該功能已被組織成基於他們的主要應用程序文件夾:

  • 外部/
  • 圖像處理/
  • 圖片/
  • 矩陣/
  • 目/
  • MEX /
  • 效用/
  • 包裝/

安裝

絕大多數這段代碼是MATLAB( *.m文件)。 因此,只有在安裝MATLAB和添加qptoolbox目錄及其子目錄到您的MATLAB路徑是需要安裝:

 addpath(genpath('/absolute/path/to/gptoolbox'))

為了使這種更改永久,那麼問題:

 savepath

還有一些MEX文件,都包含在各自的文件進行安裝mex/README.md文件。

要啟用gptoolbox的IO功能問題tab完成:

 add_gptoolbox_tab_completion

這需要一兩秒鐘(或30),然後你需要重新啟動MATLAB它才能生效。

完全安裝

這種努力成為完整的安裝說明,但無疑將是不完整的一段時間。 通過如上添加路徑開始。

如上所述,大部分文件都是直的MATLAB和將只運行,如果你在你的路徑已經gptoolbox。

編譯/mex

我們的大多數MEX文件將取決於libigl 下面將假設您的usign libigl的一個“標準”的UNIX-Y安裝作為靜態庫。

在MATLAB中的問題:

 cd mex compile_qptoolbox_mex

編譯toolbox_fast_marching

在MATLAB中的問題:

 cd external/toolbox_fast_marching/ compile_mex

依賴

這取決於MATLAB和各種工具箱擴展。 許多功能還應與倍頻工作,雖然這並沒有經過測試。

依靠功能quadprog已經過測試和優化假設MOSEK工具箱已安裝,但也應該與工作quadprog在MATLAB的優化工具箱。

MEX文件可能有其他的外部依賴(如CGAL,艾根,libigl)。 見各自的README文件以獲取更多信息。 當安裝MEX庫,您可能需要修改的文件wrappers/ (如path_to_libigl.m ),所以gptoolbox知道去哪裡找。

歸因

如果您在學術項目中使用gptoolbox,請引用我們實施適當的文件。 舉一般庫,你可以使用這個的BibTeX條目:

 @misc{gptoolbox, title = {{gptoolbox}: Geometry Processing Toolbox}, author = {Alec Jacobson and others}, note = {http://github.com/alecjacobson/gptoolbox}, year = {2015}, }

執照

除非標明,否則所有代碼的版權亞歷克·雅各布森2015

我們可能會切換到MPL2牌照在不久的將來。

聯繫

幾何處理工具箱博士學位期間的前身是亞歷克·雅各布森的私人代碼庫,但獲益良多在紐約大學和蘇黎世聯邦理工學院各種合作者。 現在,幾何處理工具箱是一組的努力。 如果你在促進位數的,請聯繫亞歷克·雅各布森( alecjacobson@gmail.com ),或在github上提交pull請求。

文檔

現在,文檔被限制在每個功能的基礎。 例如,要查找的文檔cotmatrix問題:

 help cotmatrix

MATLAB腳本讀取和寫入MIDI文件

MIDI標準

MIDI是表示樂器數字接口的縮寫。 它的連接,使設備和控制聲音的方式-諸如合成器,採樣器,和計算機-使他們能夠用MIDI消息相互通信。 這讓在另一個合成一套鍵盤觸發聲音,它使得可以錄製音樂的形式,允許容易記的編輯,靈活編排,和歌曲的安排。 虛擬儀器 – 即模擬硬件合成器和採樣計算機程序 – 也使用MIDI信息在同一台計算機上運行的計算機音序軟件進行通訊。

此網頁為您介紹MIDI的基礎知識。 您可以從下載的交互式應用課程可以幫助你了解MIDI信息的一些細節。

為什麼MIDI事項

這裡只是一些事情MIDI成為可能:

  • 你可以用與你舒適的玩屬於任何其他MIDI設備,包括軟件合成器的聲音一個MIDI樂器。
  • 來自多個MIDI設備的聲音層次感創建豐富的音樂質感,或分配不同的聲音在不同的音高範圍內播放。
  • 當您播放MIDI樂器,它產生可以通過MIDI數據捕獲“序”。當音序器播放的數據,你原來的性能重建。 音序器不只是MIDI錄音機,不過,他們讓你修正錯誤,改變你的音符的音高,解決他們的時間,他們踢球的方式,他們所使用的聲音,等等。 此外,大多數音序器可捕捉不同的多個演出“軌道”,允許你建立完整的音樂編排,一次一個軌道。
  • 通用MIDI音效設置,讓你瞬間播放預錄音樂在許多MIDI樂器或電腦上。
  • 一個MIDI設備可以控制其他,讓您用最方便的工具,任何工作。 編輯MIDI樂器的聲音在您的計算機上,操作從MIDI錄音機拍框,和和。

支持MIDI最好的小冊子:

https://www.midi.org/images/easyblog_articles/43/intromid_20160320-111631_1.pdf

圖書館的支持向量機(SVM)

LIBSVM是SVM分類和回歸簡單,易於使用和高效的軟件。它解決了C-SVM分類,NU-SVM
分類,一類支持向量機,ε-SVM的回歸,和NU-SVM回歸。它還提供了自動模式選擇工具
C-SVM分類。本文檔介紹使用LIBSVM的。

 


Libsvm is available at
http://www.csie.ntu.edu.tw/~cjlin/libsvm
Please read the COPYRIGHT file before using libsvm.

Table of Contents
=================

- Quick Start
- Installation and Data Format
- `svm-train' Usage
- `svm-predict' Usage
- `svm-scale' Usage
- Tips on Practical Use
- Examples
- Precomputed Kernels
- Library Usage
- Java Version
- Building Windows Binaries
- Additional Tools: Sub-sampling, Parameter Selection, Format checking, etc.
- MATLAB/OCTAVE Interface
- Python Interface
- Additional Information

Quick Start
===========

If you are new to SVM and if the data is not large, please go to
`tools' directory and use easy.py after installation. It does
everything automatic -- from data scaling to parameter selection.

Usage: easy.py training_file [testing_file]

More information about parameter selection can be found in
`tools/README.'

Installation and Data Format
============================

On Unix systems, type `make' to build the `svm-train' and `svm-predict'
programs. Run them without arguments to show the usages of them.

On other systems, consult `Makefile' to build them (e.g., see
'Building Windows binaries' in this file) or use the pre-built
binaries (Windows binaries are in the directory `windows').

The format of training and testing data file is:

<label> <index1>:<value1> <index2>:<value2> ...
.
.
.

Each line contains an instance and is ended by a '\n' character.  For
classification, <label> is an integer indicating the class label
(multi-class is supported). For regression, <label> is the target
value which can be any real number. For one-class SVM, it's not used
so can be any number.  The pair <index>:<value> gives a feature
(attribute) value: <index> is an integer starting from 1 and <value>
is a real number. The only exception is the precomputed kernel, where
<index> starts from 0; see the section of precomputed kernels. Indices
must be in ASCENDING order. Labels in the testing file are only used
to calculate accuracy or errors. If they are unknown, just fill the
first column with any numbers.

A sample classification data included in this package is
`heart_scale'. To check if your data is in a correct form, use
`tools/checkdata.py' (details in `tools/README').

Type `svm-train heart_scale', and the program will read the training
data and output the model file `heart_scale.model'. If you have a test
set called heart_scale.t, then type `svm-predict heart_scale.t
heart_scale.model output' to see the prediction accuracy. The `output'
file contains the predicted class labels.

For classification, if training data are in only one class (i.e., all
labels are the same), then `svm-train' issues a warning message:
`Warning: training data in only one class. See README for details,'
which means the training data is very unbalanced. The label in the
training data is directly returned when testing.

There are some other useful programs in this package.

svm-scale:

	This is a tool for scaling input data file.

svm-toy:

	This is a simple graphical interface which shows how SVM
	separate data in a plane. You can click in the window to
	draw data points. Use "change" button to choose class
	1, 2 or 3 (i.e., up to three classes are supported), "load"
	button to load data from a file, "save" button to save data to
	a file, "run" button to obtain an SVM model, and "clear"
	button to clear the window.

	You can enter options in the bottom of the window, the syntax of
	options is the same as `svm-train'.

	Note that "load" and "save" consider dense data format both in
	classification and the regression cases. For classification,
	each data point has one label (the color) that must be 1, 2,
	or 3 and two attributes (x-axis and y-axis values) in
	[0,1). For regression, each data point has one target value
	(y-axis) and one attribute (x-axis values) in [0, 1).

	Type `make' in respective directories to build them.

	You need Qt library to build the Qt version.
	(available from http://www.trolltech.com)

	You need GTK+ library to build the GTK version.
	(available from http://www.gtk.org)

	The pre-built Windows binaries are in the `windows'
	directory. We use Visual C++ on a 32-bit machine, so the
	maximal cache size is 2GB.

`svm-train' Usage
=================

Usage: svm-train [options] training_set_file [model_file]
options:
-s svm_type : set type of SVM (default 0)
	0 -- C-SVC		(multi-class classification)
	1 -- nu-SVC		(multi-class classification)
	2 -- one-class SVM
	3 -- epsilon-SVR	(regression)
	4 -- nu-SVR		(regression)
-t kernel_type : set type of kernel function (default 2)
	0 -- linear: u'*v
	1 -- polynomial: (gamma*u'*v + coef0)^degree
	2 -- radial basis function: exp(-gamma*|u-v|^2)
	3 -- sigmoid: tanh(gamma*u'*v + coef0)
	4 -- precomputed kernel (kernel values in training_set_file)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/num_features)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)


The k in the -g option means the number of attributes in the input data.

option -v randomly splits the data into n parts and calculates cross
validation accuracy/mean squared error on them.

See libsvm FAQ for the meaning of outputs.

`svm-predict' Usage
===================

Usage: svm-predict [options] test_file model_file output_file
options:
-b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); for one-class SVM only 0 is supported

model_file is the model file generated by svm-train.
test_file is the test data you want to predict.
svm-predict will produce output in the output_file.

`svm-scale' Usage
=================

Usage: svm-scale [options] data_filename
options:
-l lower : x scaling lower limit (default -1)
-u upper : x scaling upper limit (default +1)
-y y_lower y_upper : y scaling limits (default: no y scaling)
-s save_filename : save scaling parameters to save_filename
-r restore_filename : restore scaling parameters from restore_filename

See 'Examples' in this file for examples.

Tips on Practical Use
=====================

* Scale your data. For example, scale each attribute to [0,1] or [-1,+1].
* For C-SVC, consider using the model selection tool in the tools directory.
* nu in nu-SVC/one-class-SVM/nu-SVR approximates the fraction of training
  errors and support vectors.
* If data for classification are unbalanced (e.g. many positive and
  few negative), try different penalty parameters C by -wi (see
  examples below).
* Specify larger cache size (i.e., larger -m) for huge problems.

Examples
========

> svm-scale -l -1 -u 1 -s range train > train.scale
> svm-scale -r range test > test.scale

Scale each feature of the training data to be in [-1,1]. Scaling
factors are stored in the file range and then used for scaling the
test data.

> svm-train -s 0 -c 5 -t 2 -g 0.5 -e 0.1 data_file

Train a classifier with RBF kernel exp(-0.5|u-v|^2), C=10, and
stopping tolerance 0.1.

> svm-train -s 3 -p 0.1 -t 0 data_file

Solve SVM regression with linear kernel u'v and epsilon=0.1
in the loss function.

> svm-train -c 10 -w1 1 -w-2 5 -w4 2 data_file

Train a classifier with penalty 10 = 1 * 10 for class 1, penalty 50 =
5 * 10 for class -2, and penalty 20 = 2 * 10 for class 4.

> svm-train -s 0 -c 100 -g 0.1 -v 5 data_file

Do five-fold cross validation for the classifier using
the parameters C = 100 and gamma = 0.1

> svm-train -s 0 -b 1 data_file
> svm-predict -b 1 test_file data_file.model output_file

Obtain a model with probability information and predict test data with
probability estimates

Precomputed Kernels
===================

Users may precompute kernel values and input them as training and
testing files.  Then libsvm does not need the original
training/testing sets.

Assume there are L training instances x1, ..., xL and.
Let K(x, y) be the kernel
value of two instances x and y. The input formats
are:

New training instance for xi:

<label> 0:i 1:K(xi,x1) ... L:K(xi,xL)

New testing instance for any x:

<label> 0:? 1:K(x,x1) ... L:K(x,xL)

That is, in the training file the first column must be the "ID" of
xi. In testing, ? can be any value.

All kernel values including ZEROs must be explicitly provided.  Any
permutation or random subsets of the training/testing files are also
valid (see examples below).

Note: the format is slightly different from the precomputed kernel
package released in libsvmtools earlier.

Examples:

	Assume the original training data has three four-feature
	instances and testing data has one instance:

	15  1:1 2:1 3:1 4:1
	45      2:3     4:3
	25          3:1

	15  1:1     3:1

	If the linear kernel is used, we have the following new
	training/testing sets:

	15  0:1 1:4 2:6  3:1
	45  0:2 1:6 2:18 3:0
	25  0:3 1:1 2:0  3:1

	15  0:? 1:2 2:0  3:1

	? can be any value.

	Any subset of the above training file is also valid. For example,

	25  0:3 1:1 2:0  3:1
	45  0:2 1:6 2:18 3:0

	implies that the kernel matrix is

		[K(2,2) K(2,3)] = [18 0]
		[K(3,2) K(3,3)] = [0  1]

Library Usage
=============

These functions and structures are declared in the header file
`svm.h'.  You need to #include "svm.h" in your C/C++ source files and
link your program with `svm.cpp'. You can see `svm-train.c' and
`svm-predict.c' for examples showing how to use them. We define
LIBSVM_VERSION and declare `extern int libsvm_version; ' in svm.h, so
you can check the version number.

Before you classify test data, you need to construct an SVM model
(`svm_model') using training data. A model can also be saved in
a file for later use. Once an SVM model is available, you can use it
to classify new data.

- Function: struct svm_model *svm_train(const struct svm_problem *prob,
					const struct svm_parameter *param);

    This function constructs and returns an SVM model according to
    the given training data and parameters.

    struct svm_problem describes the problem:

	struct svm_problem
	{
		int l;
		double *y;
		struct svm_node **x;
	};

    where `l' is the number of training data, and `y' is an array containing
    their target values. (integers in classification, real numbers in
    regression) `x' is an array of pointers, each of which points to a sparse
    representation (array of svm_node) of one training vector.

    For example, if we have the following training data:

    LABEL    ATTR1    ATTR2    ATTR3    ATTR4    ATTR5
    -----    -----    -----    -----    -----    -----
      1        0        0.1      0.2      0        0
      2        0        0.1      0.3     -1.2      0
      1        0.4      0        0        0        0
      2        0        0.1      0        1.4      0.5
      3       -0.1     -0.2      0.1      1.1      0.1

    then the components of svm_problem are:

    l = 5

    y -> 1 2 1 2 3

    x -> [ ] -> (2,0.1) (3,0.2) (-1,?)
         [ ] -> (2,0.1) (3,0.3) (4,-1.2) (-1,?)
         [ ] -> (1,0.4) (-1,?)
         [ ] -> (2,0.1) (4,1.4) (5,0.5) (-1,?)
         [ ] -> (1,-0.1) (2,-0.2) (3,0.1) (4,1.1) (5,0.1) (-1,?)

    where (index,value) is stored in the structure `svm_node':

	struct svm_node
	{
		int index;
		double value;
	};

    index = -1 indicates the end of one vector. Note that indices must
    be in ASCENDING order.

    struct svm_parameter describes the parameters of an SVM model:

	struct svm_parameter
	{
		int svm_type;
		int kernel_type;
		int degree;	/* for poly */
		double gamma;	/* for poly/rbf/sigmoid */
		double coef0;	/* for poly/sigmoid */

		/* these are for training only */
		double cache_size; /* in MB */
		double eps;	/* stopping criteria */
		double C;	/* for C_SVC, EPSILON_SVR, and NU_SVR */
		int nr_weight;		/* for C_SVC */
		int *weight_label;	/* for C_SVC */
		double* weight;		/* for C_SVC */
		double nu;	/* for NU_SVC, ONE_CLASS, and NU_SVR */
		double p;	/* for EPSILON_SVR */
		int shrinking;	/* use the shrinking heuristics */
		int probability; /* do probability estimates */
	};

    svm_type can be one of C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR, NU_SVR.

    C_SVC:		C-SVM classification
    NU_SVC:		nu-SVM classification
    ONE_CLASS:		one-class-SVM
    EPSILON_SVR:	epsilon-SVM regression
    NU_SVR:		nu-SVM regression

    kernel_type can be one of LINEAR, POLY, RBF, SIGMOID.

    LINEAR:	u'*v
    POLY:	(gamma*u'*v + coef0)^degree
    RBF:	exp(-gamma*|u-v|^2)
    SIGMOID:	tanh(gamma*u'*v + coef0)
    PRECOMPUTED: kernel values in training_set_file

    cache_size is the size of the kernel cache, specified in megabytes.
    C is the cost of constraints violation.
    eps is the stopping criterion. (we usually use 0.00001 in nu-SVC,
    0.001 in others). nu is the parameter in nu-SVM, nu-SVR, and
    one-class-SVM. p is the epsilon in epsilon-insensitive loss function
    of epsilon-SVM regression. shrinking = 1 means shrinking is conducted;
    = 0 otherwise. probability = 1 means model with probability
    information is obtained; = 0 otherwise.

    nr_weight, weight_label, and weight are used to change the penalty
    for some classes (If the weight for a class is not changed, it is
    set to 1). This is useful for training classifier using unbalanced
    input data or with asymmetric misclassification cost.

    nr_weight is the number of elements in the array weight_label and
    weight. Each weight[i] corresponds to weight_label[i], meaning that
    the penalty of class weight_label[i] is scaled by a factor of weight[i].

    If you do not want to change penalty for any of the classes,
    just set nr_weight to 0.

    *NOTE* Because svm_model contains pointers to svm_problem, you can
    not free the memory used by svm_problem if you are still using the
    svm_model produced by svm_train().

    *NOTE* To avoid wrong parameters, svm_check_parameter() should be
    called before svm_train().

    struct svm_model stores the model obtained from the training procedure.
    It is not recommended to directly access entries in this structure.
    Programmers should use the interface functions to get the values.

	struct svm_model
	{
		struct svm_parameter param;	/* parameter */
		int nr_class;		/* number of classes, = 2 in regression/one class svm */
		int l;			/* total #SV */
		struct svm_node **SV;		/* SVs (SV[l]) */
		double **sv_coef;	/* coefficients for SVs in decision functions (sv_coef[k-1][l]) */
		double *rho;		/* constants in decision functions (rho[k*(k-1)/2]) */
		double *probA;		/* pairwise probability information */
		double *probB;
		int *sv_indices;        /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */

		/* for classification only */

		int *label;		/* label of each class (label[k]) */
		int *nSV;		/* number of SVs for each class (nSV[k]) */
					/* nSV[0] + nSV[1] + ... + nSV[k-1] = l */
		/* XXX */
		int free_sv;		/* 1 if svm_model is created by svm_load_model*/
					/* 0 if svm_model is created by svm_train */
	};

    param describes the parameters used to obtain the model.

    nr_class is the number of classes. It is 2 for regression and one-class SVM.

    l is the number of support vectors. SV and sv_coef are support
    vectors and the corresponding coefficients, respectively. Assume there are
    k classes. For data in class j, the corresponding sv_coef includes (k-1) y*alpha vectors,
    where alpha's are solutions of the following two class problems:
    1 vs j, 2 vs j, ..., j-1 vs j, j vs j+1, j vs j+2, ..., j vs k
    and y=1 for the first j-1 vectors, while y=-1 for the remaining k-j
    vectors. For example, if there are 4 classes, sv_coef and SV are like:

        +-+-+-+--------------------+
        |1|1|1|                    |
        |v|v|v|  SVs from class 1  |
        |2|3|4|                    |
        +-+-+-+--------------------+
        |1|2|2|                    |
        |v|v|v|  SVs from class 2  |
        |2|3|4|                    |
        +-+-+-+--------------------+
        |1|2|3|                    |
        |v|v|v|  SVs from class 3  |
        |3|3|4|                    |
        +-+-+-+--------------------+
        |1|2|3|                    |
        |v|v|v|  SVs from class 4  |
        |4|4|4|                    |
        +-+-+-+--------------------+

    See svm_train() for an example of assigning values to sv_coef.

    rho is the bias term (-b). probA and probB are parameters used in
    probability outputs. If there are k classes, there are k*(k-1)/2
    binary problems as well as rho, probA, and probB values. They are
    aligned in the order of binary problems:
    1 vs 2, 1 vs 3, ..., 1 vs k, 2 vs 3, ..., 2 vs k, ..., k-1 vs k.

    sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to
    indicate support vectors in the training set.

    label contains labels in the training data.

    nSV is the number of support vectors in each class.

    free_sv is a flag used to determine whether the space of SV should
    be released in free_model_content(struct svm_model*) and
    free_and_destroy_model(struct svm_model**). If the model is
    generated by svm_train(), then SV points to data in svm_problem
    and should not be removed. For example, free_sv is 0 if svm_model
    is created by svm_train, but is 1 if created by svm_load_model.

- Function: double svm_predict(const struct svm_model *model,
                               const struct svm_node *x);

    This function does classification or regression on a test vector x
    given a model.

    For a classification model, the predicted class for x is returned.
    For a regression model, the function value of x calculated using
    the model is returned. For an one-class model, +1 or -1 is
    returned.

- Function: void svm_cross_validation(const struct svm_problem *prob,
	const struct svm_parameter *param, int nr_fold, double *target);

    This function conducts cross validation. Data are separated to
    nr_fold folds. Under given parameters, sequentially each fold is
    validated using the model from training the remaining. Predicted
    labels (of all prob's instances) in the validation process are
    stored in the array called target.

    The format of svm_prob is same as that for svm_train().

- Function: int svm_get_svm_type(const struct svm_model *model);

    This function gives svm_type of the model. Possible values of
    svm_type are defined in svm.h.

- Function: int svm_get_nr_class(const svm_model *model);

    For a classification model, this function gives the number of
    classes. For a regression or an one-class model, 2 is returned.

- Function: void svm_get_labels(const svm_model *model, int* label)

    For a classification model, this function outputs the name of
    labels into an array called label. For regression and one-class
    models, label is unchanged.

- Function: void svm_get_sv_indices(const struct svm_model *model, int *sv_indices)

    This function outputs indices of support vectors into an array called sv_indices.
    The size of sv_indices is the number of support vectors and can be obtained by calling svm_get_nr_sv.
    Each sv_indices[i] is in the range of [1, ..., num_traning_data].

- Function: int svm_get_nr_sv(const struct svm_model *model)

    This function gives the number of total support vector.

- Function: double svm_get_svr_probability(const struct svm_model *model);

    For a regression model with probability information, this function
    outputs a value sigma > 0. For test data, we consider the
    probability model: target value = predicted value + z, z: Laplace
    distribution e^(-|z|/sigma)/(2sigma)

    If the model is not for svr or does not contain required
    information, 0 is returned.

- Function: double svm_predict_values(const svm_model *model,
				    const svm_node *x, double* dec_values)

    This function gives decision values on a test vector x given a
    model, and return the predicted label (classification) or
    the function value (regression).

    For a classification model with nr_class classes, this function
    gives nr_class*(nr_class-1)/2 decision values in the array
    dec_values, where nr_class can be obtained from the function
    svm_get_nr_class. The order is label[0] vs. label[1], ...,
    label[0] vs. label[nr_class-1], label[1] vs. label[2], ...,
    label[nr_class-2] vs. label[nr_class-1], where label can be
    obtained from the function svm_get_labels. The returned value is
    the predicted class for x. Note that when nr_class = 1, this
    function does not give any decision value.

    For a regression model, dec_values[0] and the returned value are
    both the function value of x calculated using the model. For a
    one-class model, dec_values[0] is the decision value of x, while
    the returned value is +1/-1.

- Function: double svm_predict_probability(const struct svm_model *model,
	    const struct svm_node *x, double* prob_estimates);

    This function does classification or regression on a test vector x
    given a model with probability information.

    For a classification model with probability information, this
    function gives nr_class probability estimates in the array
    prob_estimates. nr_class can be obtained from the function
    svm_get_nr_class. The class with the highest probability is
    returned. For regression/one-class SVM, the array prob_estimates
    is unchanged and the returned value is the same as that of
    svm_predict.

- Function: const char *svm_check_parameter(const struct svm_problem *prob,
                                            const struct svm_parameter *param);

    This function checks whether the parameters are within the feasible
    range of the problem. This function should be called before calling
    svm_train() and svm_cross_validation(). It returns NULL if the
    parameters are feasible, otherwise an error message is returned.

- Function: int svm_check_probability_model(const struct svm_model *model);

    This function checks whether the model contains required
    information to do probability estimates. If so, it returns
    +1. Otherwise, 0 is returned. This function should be called
    before calling svm_get_svr_probability and
    svm_predict_probability.

- Function: int svm_save_model(const char *model_file_name,
			       const struct svm_model *model);

    This function saves a model to a file; returns 0 on success, or -1
    if an error occurs.

- Function: struct svm_model *svm_load_model(const char *model_file_name);

    This function returns a pointer to the model read from the file,
    or a null pointer if the model could not be loaded.

- Function: void svm_free_model_content(struct svm_model *model_ptr);

    This function frees the memory used by the entries in a model structure.

- Function: void svm_free_and_destroy_model(struct svm_model **model_ptr_ptr);

    This function frees the memory used by a model and destroys the model
    structure. It is equivalent to svm_destroy_model, which
    is deprecated after version 3.0.

- Function: void svm_destroy_param(struct svm_parameter *param);

    This function frees the memory used by a parameter set.

- Function: void svm_set_print_string_function(void (*print_func)(const char *));

    Users can specify their output format by a function. Use
        svm_set_print_string_function(NULL);
    for default printing to stdout.

Java Version
============

The pre-compiled java class archive `libsvm.jar' and its source files are
in the java directory. To run the programs, use

java -classpath libsvm.jar svm_train <arguments>
java -classpath libsvm.jar svm_predict <arguments>
java -classpath libsvm.jar svm_toy
java -classpath libsvm.jar svm_scale <arguments>

Note that you need Java 1.5 (5.0) or above to run it.

You may need to add Java runtime library (like classes.zip) to the classpath.
You may need to increase maximum Java heap size.

Library usages are similar to the C version. These functions are available:

public class svm {
	public static final int LIBSVM_VERSION=321;
	public static svm_model svm_train(svm_problem prob, svm_parameter param);
	public static void svm_cross_validation(svm_problem prob, svm_parameter param, int nr_fold, double[] target);
	public static int svm_get_svm_type(svm_model model);
	public static int svm_get_nr_class(svm_model model);
	public static void svm_get_labels(svm_model model, int[] label);
	public static void svm_get_sv_indices(svm_model model, int[] indices);
	public static int svm_get_nr_sv(svm_model model);
	public static double svm_get_svr_probability(svm_model model);
	public static double svm_predict_values(svm_model model, svm_node[] x, double[] dec_values);
	public static double svm_predict(svm_model model, svm_node[] x);
	public static double svm_predict_probability(svm_model model, svm_node[] x, double[] prob_estimates);
	public static void svm_save_model(String model_file_name, svm_model model) throws IOException
	public static svm_model svm_load_model(String model_file_name) throws IOException
	public static String svm_check_parameter(svm_problem prob, svm_parameter param);
	public static int svm_check_probability_model(svm_model model);
	public static void svm_set_print_string_function(svm_print_interface print_func);
}

The library is in the "libsvm" package.
Note that in Java version, svm_node[] is not ended with a node whose index = -1.

Users can specify their output format by

	your_print_func = new svm_print_interface()
	{
		public void print(String s)
		{
			// your own format
		}
	};
	svm.svm_set_print_string_function(your_print_func);

Building Windows Binaries
=========================

Windows binaries are available in the directory `windows'. To re-build
them via Visual C++, use the following steps:

1. Open a DOS command box (or Visual Studio Command Prompt) and change
to libsvm directory. If environment variables of VC++ have not been
set, type

""C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat""

You may have to modify the above command according which version of
VC++ or where it is installed.

2. Type

nmake -f Makefile.win clean all

3. (optional) To build shared library libsvm.dll, type

nmake -f Makefile.win lib

4. (optional) To build 32-bit windows binaries, you must
	(1) Setup "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" instead of vcvars64.bat
	(2) Change CFLAGS in Makefile.win: /D _WIN64 to /D _WIN32

Another way is to build them from Visual C++ environment. See details
in libsvm FAQ.

- Additional Tools: Sub-sampling, Parameter Selection, Format checking, etc.
============================================================================

See the README file in the tools directory.

MATLAB/OCTAVE Interface
=======================

Please check the file README in the directory `matlab'.

Python Interface
================

See the README file in python directory.

Additional Information
======================

If you find LIBSVM helpful, please cite it as

Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support
vector machines. ACM Transactions on Intelligent Systems and
Technology, 2:27:1--27:27, 2011. Software available at
http://www.csie.ntu.edu.tw/~cjlin/libsvm

LIBSVM implementation document is available at
http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf

For any questions and comments, please email cjlin@csie.ntu.edu.tw

Acknowledgments:
This work was supported in part by the National Science
Council of Taiwan via the grant NSC 89-2213-E-002-013.
The authors thank their group members and users
for many helpful discussions and comments. They are listed in
http://www.csie.ntu.edu.tw/~cjlin/libsvm/acknowledgements

 

source :

https://github.com/cjlin1/libsvm