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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

發(fā)布時間:2025/4/16 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、隱馬爾可夫模型HMM的應用場景,關乎于序列和狀態(tài)變化的都可以。
? ?發(fā)現(xiàn)java有可庫,專為開發(fā)HMM,可惜只能在CSDN上有得下載。
? ?
2、jahmm是java開發(fā)隱馬爾科夫模型的一個jar包。
? ?下載jahmm-0.6.1.rar包,源地址是google(國內無法訪問),好在CSDN資源上有得下載,我也上傳一個(零積分可下載):
? ? http://download.csdn.net/detail/fjssharpsword/9843680
? ?包里有jar還有html可以參照學習;userguide.pdf作為入門看,html是jar中類和函數(shù)說明,要重點看。
? ?可惜包里沒有源碼,有興趣可以jar反編譯看看。


3、工程中引入jahmm-0.6.1.jar,導入結構圖如下:

? ? ?


4、參照userguide.pdf建立的demo代碼如下:

? ??

package sk.ml;import java.io.FileReader; import java.io.Reader; import java.util.List;import be.ac.ulg.montefiore.run.jahmm.Hmm; import be.ac.ulg.montefiore.run.jahmm.ObservationInteger; import be.ac.ulg.montefiore.run.jahmm.ObservationVector; import be.ac.ulg.montefiore.run.jahmm.OpdfInteger; import be.ac.ulg.montefiore.run.jahmm.OpdfIntegerFactory; import be.ac.ulg.montefiore.run.jahmm.OpdfMultiGaussianFactory; import be.ac.ulg.montefiore.run.jahmm.io.ObservationSequencesReader; import be.ac.ulg.montefiore.run.jahmm.io.ObservationVectorReader; import be.ac.ulg.montefiore.run.jahmm.learn.KMeansLearner;public class HMMDemo {public static void main(String args[]) throws Exception{Reader reader = new FileReader("D:\\tmp\\test.seq");List<List<ObservationVector >> seqs = ObservationSequencesReader.readSequences (new ObservationVectorReader (),reader);reader.close ();KMeansLearner <ObservationVector > kml = new KMeansLearner <ObservationVector >(3, new OpdfMultiGaussianFactory(2) , seqs);Hmm <ObservationVector> fittedHmm = kml.learn ();System.out.println(fittedHmm.nbStates());/*//給定高斯分布的均值和協(xié)方差矩陣double [] mean = {2.0, 4.0};double [][] covariance = { {3.0, 2.0}, {2.0, 4.0} };OpdfMultiGaussian omg = new OpdfMultiGaussian (mean,covariance);//根據(jù)該分布生成10000個觀測向量ObservationVector[] obs = new ObservationVector[10000];for (int i = 0; i < obs.length; i++)obs[i] = omg.generate();//找到適合這些觀測的高斯分布omg.fit(obs);*//*OpdfIntegerFactory factory = new OpdfIntegerFactory(2);Hmm<ObservationInteger> hmm = new Hmm<ObservationInteger>(2, factory);hmm.setPi(0, 0.95);hmm.setPi(1, 0.05);hmm.setOpdf(0, new OpdfInteger(new double[] { 0.95, 0.05 }));hmm.setOpdf(1, new OpdfInteger(new double[] { 0.2, 0.8 }));hmm.setAij (0, 1, 0.05);hmm.setAij (0, 0, 0.95);hmm.setAij (1, 0, 0.1);hmm.setAij (1, 1, 0.9);*/} }

test.seq文件:保存成txt文件,結束要新行。

# A simple data file [ 1.1 2.2 ];[ 4.4 5.5 ];[ 4.3 6.0 ];[ 7.7 8.8 ]; [ 0.5 1.5 ];[ 1.5 2.5 ];[ 4.5 5.5 ];[ 8.0 8.0 ];[ 7.0 8.0];

??
? ?從userguide.pdf中找出的代碼不痛不癢,看來要仔細看源碼才能知道中間算法和具體實例應用。

總結

以上是生活随笔為你收集整理的机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库的全部內容,希望文章能夠幫你解決所遇到的問題。

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