一、科學計算或矩陣運算庫
科學計算包:
- JMathLib是一個用於計算復雜數學表達式並能夠圖形化顯示計算結果的Java開源類庫。它是Matlab、Octave、FreeMat、Scilab的一個克隆,但完全采用純Java實現。
- JSci:Java 科學對象(JSci)開放源代碼項目是 Durham(英國 Durham)大學粒子理論中心的三年級研究生 Mark Hale 創立的。JSci 是一個包集合,包含數學和科學類。 使用 JSci,您既可以在 AWT 中也可以在 Swing 中創建簡單的條形圖、折線圖和餅形圖。 JSci.swing.JBarGraph 、 JSci.swing.JPieChart 和 JSci.swing.JLineGraph API 組件設計得也很好,這些組件和 AWT 繪圖類都遵守 MVC 體系結構。
- JScience:http://jscience.org/ JScience 是一個Java的科學計算包
- jLab:jLab是數值計算的Java執行環境。該jLab環境的目的是提供一個基於Matlab / Scilab喜歡的科學計算平台所支持的腳本引擎執行的Java語言。 The current jLab
- ND4J:在JVM上實現快速的科學計算;ND4J是一個開源的數值計算擴展 ,它將 Python中著名的 numpy 庫的很多特性帶到了Java中。ND4J可以用來存儲和處理大型多維矩陣。它的計算和處理速度很快,但占用的內存卻很少,程序員們可以很容易地使用它來與其他JAVA或Scala庫作接口。https://github.com/deeplearning4j/dl4j-examples
dl4j(DeepLearning4j): java下的一個機器學習開源項目
nd4j: dl4j使用的底層的算法庫,實現的幾乎所有的矩陣相關的操作 - Shared Scientific Toolbox:共享科學工具箱是一個用於科學和分布式計算的Java類庫。它具有廣泛的多方面的陣列線性代數和FFT支持;異步,高性能的網絡層和詮釋抽象類載入中,記錄和消息傳遞。
Colt Matrix Libary:Colt Project 提供了一組開源的高性能的科學和數學計算的 Java 庫
Colt是一個高性能的數學庫,由以下幾個子庫構成:
Colt庫:基本的動態數組、稀疏矩陣、線性代數。
Jet庫:數理統計、直方圖。
CoreJava庫:類printf的打印函數,並行計算。PETSC:PETSc(Portable, Extensible Toolkit for Scientific Computation) ,讀作Pet-see,是美國能源部ODE2000支持開發的20多個ACTS工具箱之一,由Argonne國家實驗室開發的可移植可擴展科學計算工具箱,主要用於在分布式存儲環境高效求解偏微分方程組及相關問題。PETSc所有消息傳遞通信均采用MPI標准實現。線性方程組求解器是PETSc的核心組件之一,PETSc幾乎提供了所有求解線性方程組的高效求解器,既有串行求解也有並行求解,既有直接法求解也有迭代法求解。
- Catalano:Catalano Framework 是一個 Java 和 Android 的科學計算框架。 主要計算功能: 圖像處理 模糊邏輯 數學計算 統計 機器學習 神經網絡
矩陣運算包:
- EJML:Java矩陣操作庫 Efficient Java Matrix Library (EJML)這是一個比較高效率的Java矩陣運算庫,提供比較全面地計算。 但是和C++的矩陣運算還是不能比。http://blog.163.com/jekyll_zhou%40126/blog/static/18204738201210642927390/ 下載網址
- Jama:Jama是一個基本的線性代數java包。包括一個基本的Matrix類和5個矩陣分解類。Matrix類提供了基本的線性代數數值運算的功能,https://www.cnblogs.com/zangbo/p/5622351.html
- UJMP (Universal Java Matrix Package)** 統一Java矩陣工具包是一個提供各種矩陣運算的Java類庫。這個工具包提供了諸如稀疏矩陣和稠密矩陣的實現,以及矩陣的分解、求逆、加法、乘法,均值,方差和相關系數等運算功能. 此外還提供一些常用的線性代數運算功能,矩陣可視化功能和矩陣數據導入與導出的功能。
- jlbas: 矩陣向量運算庫jblas,http://blog.csdn.net/golden1314521/article/details/45484529
jblas is a fast linear algebra library for Java. jblas is based on BLAS and LAPACK, the de-facto industry standard for matrix computations, and uses state-of-the-art implementations like ATLAS for all its computational routines, making jBLAS very fast.
主頁地址:http://jblas.org/
該庫的API文檔地址:http://jblas.org/javadoc/index.html
相關例子和庫文件jar包下載 http://download.csdn.net/detail/u012176591/8660849
在Java工程中我們只要 引入jar包文件就可以了。 ND4J:
二、圖形繪制+圖像處理包:
***java的Graphics類:Java中繪制基本圖形,可以使用Java類庫中的Graphics類,此類位於java.awt包中。在我們自己的java程序文件中,要使用Graphics類就需要使用import java.awt.Graphics語句將Graphics類導入進來。
Graphics類提供基本的幾何圖形繪制方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等。本項目僅用到畫直線的功能,其它圖形繪制請自行點擊查閱Java API。
Graphics類的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)Oracle提供的 Java Advanced Imaging (JAI) 庫處理2D圖像還可以的。
- ***Java Image Filters【Java Image Filters 是由 Jhlabs 開發的一組用來處理 Java 圖像的類庫,提供各種常用的圖像處理效果,例如反轉色、扭曲、水波紋、凹凸、黑白效果等等數十種效果,如下圖所示,更多的效果請看其網站首頁: ChannelMixFilter - Mixes the RGB channels Cont… 更多Java Image Filters信息】http://www.oschina.net/p/javaimagefilters
- **ImageJ:一個Java的圖像處理和分析庫,ImageJ是一個基於java的公共的圖像處理軟件,它是由National Institutes of Health開發的。可運行於Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多種平台。其基於java的特點, 使得它編寫的程序能以applet等方式分發。
ImageJ能夠顯示,編輯,分析,處理,保存,打印8位,16位,32位的圖片, 支持TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS等多種格式。ImageJ支持圖像棧功能,即在一個窗口里以多線程的形式層疊多個圖像, 並行處理。只要內存允許,ImageJ能打開任意多的圖像進行處理。除了基本的圖像操作, 比如縮放,旋轉, 扭曲, 平滑處理外,ImageJ還能進行圖片的區域和像素統計, 間距,角度計算, 能創建柱狀圖和剖面圖,進行傅里葉變換。
ImageJ是一個開放結構的軟件, 支持用戶自定義插件和宏。
ImageJ自帶編輯器, 並且導入了java的編譯器,實現了簡單的IDE功能, 用戶可直接基於ImageJ進行圖像處理 - ***Sanselan:Sanselan 是一個純 Java 的圖形庫,可以讀寫各種格式的圖像文件,包括快速解析圖片信息例如大小/顏色/icc以及元數據等。盡管因為是Java開發的,在處理速度上會稍微慢一 些,但具備良好的可移植性。http://www.oschina.net/p/sanselan
- JJIL 是一個Java 的圖像處理類庫,有超過60個的圖像處理任務,例如可以用來識別條形碼之類。JJIL 主要面向J2ME 手機應用開發
- ***Imagero 是 Java 的圖像處理庫,支持的圖像類型包括:BMP, GIF, TIFF, PNG, JNG, MNG, JPEG (including CMYK and 12-bit grey), PSD, PBM, PGM, PPM, TGA, EPS, EPSI, EPSF, AI, PDF, MRW, CRW, NEF, DCR, and DNG。Imagero 可讀取縮略圖以及編輯圖像元數據… 更多Imagero信息
- 【商業】繪圖庫 DISLIN:DISLIN是一個高級別,易於使用的繪圖庫,支持曲線,條形圖,餅圖,三維彩色圖,曲面,輪廓,和地圖顯示。支持多種輸出格式,如X11的,VGA,PostScript , PDF格式,CGM, HPGL , TIFF和PNG等。繪圖采用Perl解釋語言 , 支持Python和Java,同時還支持大多數http://www.oschina.net/p/dislin
- Thumbnailator 是一個用來生成圖像縮略圖的 Java 類庫,通過很簡單的代碼即可生成圖片縮略圖,也可直接對一整個目錄的圖片生成縮略圖。
- JAI-ImageIO:
Java Advanced Imaging Image I/O Tools projects - ***Marvin: Java圖像處理框架 Marvin 是一個Java開發的可擴展的圖像處理框架,該框架主要提供以下幾方面的功能: 基本圖像操作; 從視頻中捕獲幀; 多線程的圖像處理; 通過GUI界面集成插件; 插件性能分析; 通過插件進行功能擴展。 http://www.oschina.net/p/marvin
- Java 圖像處理框架 Processing: Processing 是一個為想要圖像處理程序所提供的開源編程語言和環境,動畫和互動。這是使用的學生,藝術家,設計師,研究人員和愛好者學習,原型及生產。這是建立基礎教育計算機編程在視覺方面,並作為軟件寫生簿和專業的生產工具。http://www.oschina.net/p/processing
- 圖像處理標簽庫 JImageTaglib
JImageTaglib是個用來處理圖片的的標簽,在服務器中生成響應的處理圖片,可以對圖片進行過濾(如轉灰度圖,邊緣查找等)另外還可以用來生成條形碼。 - Java圖像處理庫 jrawio:jrawio 是一個 Java Image I/O API 的服務提供者,用來處理數碼相機拍攝的RAW格式的圖片,包括NEF, CRW, CR2, PEF, SRF, MRW,這是一個純 Java 的類庫。
- OpenCL的Java庫 JavaCL: JavaCL 是一個封裝了 OpenCL 圖形API的 Java 類庫,提供很多高級的圖像處理功能。http://www.oschina.net/p/javacl
- OpenCL庫 JOCL:JOCL (Java OpenCL)提供一種簡單的方式為OpenCL API添加Java binding。JOCL會提供兩個級別:自動生成一個低級別的binding;還有一個需要人工編寫的高級別的binding,提供一個方便的界面並將冗長降到最低。 特點: 高性能,跨平台高,http://www.oschina.net/p/jocl
- 三維場景圖開發類庫 jReality: jReality是一個Java開源的三維場景圖開發類庫,設計用於數學領域的3D可視化。jReality是線程安全的,擁有一個靈活的着色模型基於場景圖中的一種屬性繼承機制,獨立於設備的用戶交互並且支持真正的3D Audio(JACK)。http://www.oschina.net/p/jreality
- ogre4j是一個可以在Java應用程序中能過JNI使用OGRE的開源項目。OGRE(Object-Oriented Graphics Rendering Engine):是一個被廣泛使用的開源三維圖形渲染庫,成功地被應用於諸多三維仿真領域,其中包括網絡游戲和一些商業的三維仿真項目)。
- opencv: 計算機視覺和圖像處理 19.
//圖像處理庫:
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
GIF動畫制作工具 GiftedMotion:
二維的GUI框架 JHotDraw
JHotDraw是一個開源項目,它是一個二維的GUI框架,主要用於支持用Java開發的圖形編輯器。它的設計中采用了許多著名的設計模式,因而具有良 好的框架、很好的復用性和擴展性。針對矢量圖形軟件開發過程中面臨的各種難題,本文提出了基於JHotDraw的解決方案,實現…
指紋識別開發包 SourceAFIS
三、 機器學習和深度學習庫
3.1 機器學習庫
- ***opencv:
- ***TensorFlow: 一個是我們最喜歡的機器學習框架,被稱作無與倫比的TensorFlow框架。 TensorFlow是一個使用數據流圖進行數值計算的開源軟件庫,是GitHub上最受歡迎的機器學習項目,也是參與者和貢獻者最多的機器學習項目。TensorFlow主要是用Python編寫的,但它也支持Java和Go的一些用法。
- ***Weka: 地址: http://www.cs.waikato.ac.nz/ml/weka/index.html 毫無疑問,Weka 是目前首選的 Java 機器學習庫。完全基於 Java 環境,開源,免費,具有易於使用的圖形界面,適合於數據挖掘,數據分析和預測建模等多種應用場景。Weka包括一系列的工具,如數據預處理、分類、回歸、聚類、關聯規則以及可視化。
- ***ML:Java機器學習庫ML官網:http://java-ml.sourceforge.net/
Java-ML是一個使用Java編寫的一系列機器學習算法的Java API。它只提供了一個標准的算法接口。對於一個機器學習庫來說,最基礎就是數據處理能力,ml庫給了dataset和instance兩個類,dataset是矩陣,instance是行(可以理解是一個list,或一個double數組)。import net.sf.javaml.core.Dataset;
import net.sf.javaml.core.DefaultDataset;
import net.sf.javaml.core.DenseInstance;
import net.sf.javaml.core.Instance;
import net.sf.javaml.core.SparseInstance;
import net.sf.javaml.tools.InstanceTools;
import net.sf.javaml.tools.data.FileHandler; - **Massive Online Analysis(MOA)是一個面向數據流挖掘的流行開源框架,有着非常活躍的成長社區。它包括一系列的機器學習算法(分類、回歸、聚類、異常檢測、概念漂移檢測和推薦系統)和評估工具。關聯了WEKA項目,MOA也是用Java編寫的,其擴展性更強。MOA 也是基於 Java 環境,開源,免費,在面對復雜問題時,MOA 還能和 Weka 協同工作。MOA 在運算效率和內存占用方面都做了特殊優化,通過提供易於擴展的底層結構、可復用的數據流分析設置以及一系列內部實現好機器學習算法,MOA 為實時數據流分析提供了一個非常優秀的基准框架,因此 在實時數據流挖掘領域的應用非常廣泛 。其內部實現的機器學習算法包括:分類、回歸、聚類、孤立點檢測、概念漂移檢測和推薦系統等。地址: http://moa.cms.waikato.ac.nz/
- ***MALLET :地址: http://mallet.cs.umass.edu/ 主要由來自麻省大學(University of Massachusetts)的Andrew McCallum教授和其學生開發,是一個基於 Java 環境的開源機器學習工具包。主要應用於統計自然語言處理,文檔分類,聚類,主題建模,信息提取等 文本類分析場景 。許多功能強大的工具,包括用於文檔分類的高級工具,用於序列標記的工具,和用於主題建模的工具等。MALLET 還支持各種類型的算法,包括朴素貝葉斯,決策樹和最大熵等。此外,MALLET 還提供了許多例程,包括分詞,刪除停用詞,將文本轉換為向量表示等。
- MEKA項目提供了一個面向多標簽學習和評價方法的開源實現。在多標簽分類中,我們要預測每個輸入實例的多個輸出變量。這與“普通”情況下只涉及一個單一目標變量的情形不同。此外,MEKA基於WEKA的機器學習工具包。
- Advanced Data mining And Machine learning System(ADAMS)是一種新型的柔性工作流引擎,旨在迅速建立並保持真實世界的復雜知識流,它是基於GPLv3發行的。
- Environment for Developing KDD-Applications Supported by Index-Structure(ELKI)是一款基於Java的開源(AGPLv3)數據挖掘軟件。ELKI主要集中於算法研究,重點研究聚類分析中的無監督方法和異常檢測。
- Mallet是一個基於Java的面向文本文件的機器學習工具包。Mallet支持分類算法,如最大熵、朴素貝葉斯和決策樹分類。
- Encog是一個先進的機器學習框架,集成了支持向量機(SVM)、人工神經網絡、遺傳算法、貝葉斯網絡、隱馬爾可夫模型(HMM)、遺傳編程和遺傳算法。
- Encog是一個先進的機器學習框架,集成了支持向量機(SVM)、人工神經網絡、遺傳算法、貝葉斯網絡、隱馬爾可夫模型(HMM)、遺傳編程和遺傳算法。
- Mahout是一個內置算法的機器學習框架。Mahout-Samsara幫助人們創建他們自己的數學,並提供了一些現成的算法實現。
- Rapid Miner是德國多特蒙特技術大學開發的。它為開發者開發應用程序提供了一個GUI(圖形用戶界面)和Java API。它還提供了一些機器學習算法,用來做數據處理、可視化以及建模。
- Apache SAMOA是 一個機器學習(ML)框架,內嵌面向分布式流ML算法的編程抽象,並且允許在沒有直接處理底層分布式流處理引擎(DSPEe,如 Apache Storm、Apache S4和Apache samza)復雜性的情況下,開發新的ML算法。用戶可以開發分布式流ML算法,而且可以 在多個DSPEs上執行。
- Neuroph通過提供支持創建、訓練和保存神經網絡的Java網絡庫和GUI工具,簡化了神經網絡開發。
- Oryx 2是一個建立在Apache Spark和Apache Kafka的Lambda架構實現,但隨着實時大規模機器學習而逐漸開始專業化。這是一個用於構建應用程序的框架,但也包括打包,以及面向協同過濾、分類、回歸和聚類的端到端的應用程序。
- Stanford Classifier是一個機器學習工具,它可以將數據項歸置到一個類別。一個概率分類器,比如這個,它可以對一個數據項給出類分配的概率分布。該軟件是最大熵分類器的一個Java實現。
- JSAT是一個快速入門的機器學習庫。該庫是我在業余時間開發的,基於GPL3發行的。庫中的一部分內容可自主學習,例如所有的代碼都是獨立的。JSAT沒有外部依賴,而且是純Java編寫的。
- Java Machine Learning Library(Java機器學習庫)是一系列機器學習算法的相關實現。這些算法,無論是源代碼還是文檔,都編寫的很出色。其主要語言是Java。
- MLlib (Spark)是Apache Spark的可擴展機器學習庫。雖然是Java,但該庫與平台還支持Java,Scala和Python綁定。此庫是最新的,並且算法很多。
- H2O是用於智能應用的機器學習API。它在大數據上對統計學、機器學習和數學進行了規模化。H2O可擴展,開發者可以在核心部分使用簡單的數學知識。
- ELKI: https://elki-project.github.io/ Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引結構支持的 KDD 應用開發環境 ,Environment for Developing KDD-Applications Supported by Index-Structures,即 由索引結構支持的 KDD 應用開發環境
- Neo4j :Neo4j是一個世界領先的開源圖形數據庫。 它是由Neo技術使用Java語言完全開發的。圖形數據庫是以圖形結構的形式存儲數據的數據庫。 它以節點,關系和屬性的形式存儲應用程序的數據。 正如RDBMS以表的“行,列”的形式存儲數據,GDBMS以“圖形”的形式存儲數據。https://neo4j.com/ 教程:https://www.w3cschool.cn/neo4j/
3.2 深度學習庫: Deeplearning4j
地址: https://deeplearning4j.org/
Deeplearning4j(Deep Learning For Java)是 Java 和 Scala 環境下的一個開源分布式的深度學習項目,由總部位於美國舊金山的商業智能和企業軟件公司 Skymind 牽頭開發,並得到了騰訊的投資。正如它的命名,Deeplearning4j 的運行需要 Java 虛擬機 JVM 的支持。
去年,JAXenter 社區曾提名 Deeplearning4j 作為 Java 生態系統最具創新的貢獻者之一。
Deeplearning4j 旨在為工作在 Hadoop 框架下的 Java、Scala 和 Clojure 程序員提供一個可以靈活 DIY 的機器學習工具。團隊在官網表示,他們希望通過一些機器學習算法的開發,將商業帶入智能化數據的時代。也正是為了實現這一理想,惠及更多的用戶,因此選擇了移植性更好的 Java 環境來實現這些算法。目前,Deeplearning4j 在模式識別、時間序列檢測和基於語音、文本的情感識別方面應用廣泛,包括谷歌、Facebook和微軟等巨頭公司都是它的用戶。
3.3 大數據處理
1) BID Data Project –能夠運行快速、大規模的機器學習和數據挖掘的模式集合
2) Apache Singa Apache Singa由新加坡國立大學的團隊開發,是一個靈活可擴展的利用大數據分析的深度學習平台。這個深度學習框架為大量數據的可擴展分布式培訓提供了靈活架構。Singa可擴展以運行各種硬件,主要應用在圖像識別和自然語言處理(NLP)方面。
Singa目前是一個Apache孵化器項目,提供了簡單的編程模型,可以在一個節點集群上工作。分布式深度學習在訓練過程中使用模型划分和並行化,一般而言,Singa支持傳統的機器學習模型,如邏輯回歸。
Singa是用Java,C ++和Python編寫的,可以在AWS上或通過Docker嘗試使用。
3)
3.4. Neuroph –面向對象的神經網絡
neuroph是用來開發常用的神經網絡構架的輕量級java框架。該框架提供了一個java庫以及一個GUI工具(稱為easyNeurons),你可以用它來在java項目中創建和訓練自己的神經網絡。
Neuroph包含一個開源的java類庫和少量對應基本神經網絡概念的基類。對於剛開始使用神經網絡,或者想知道它們如何工作的人來說,Neuroph是個非常好的墊腳石。你可以嘗試Neuroph的在線演示,看看它是怎么運行的。
四、數據挖掘和統計分析工具庫
- WEKA:WEKA是一個可用於數據挖掘任務的機器學習算法集合。該算法可以直接應用到數據集或從自己的Java代碼調用。 WEKA包含數據預處理,分類,回歸,聚類,關聯規則,和可視化工具。它也非常適用於開發新的機器學習方案。
- jmotif:時間序列、分類、數據挖掘開發庫
- java-ml:Java機器學習庫,聚類、分類、特征選擇、
- flanagan: 數學和統計java開發庫,包含回歸算法,一次二次線性非線性回歸算法,數據平滑算法,傅里葉變換,數值積分,插值法。http://www.ee.ucl.ac.uk/~mflanaga/java/
- Mahout:Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。經典算法包括聚類、分類、協同過濾、進化編程等等,並且,在 Mahout 的最近版本中還加入了對 Apache Hadoop 的支持,使這些算法可以更高效的運行在雲計算環境中。
- JMulTi:時間序列分析開發庫
- jfreechart:【可實現數據統計圖】下載地址:http://download.csdn.net/detail/pzhtpf/4327700
- jcommon:【可實現數據統計圖】
- gnujaxp:【可實現數據統計圖】
http://blog.csdn.net/pzhtpf/article/details/7600100
以上第三方工具庫匯總不完整,歸類不一定正確,僅供參考。
原文地址:https://blog.csdn.net/panrenlong/article/details/79246349