微笑(統計機器智能和學習引擎)是一種快速而全面的機器學習,NLP,線性代數,圖形,插值和可視化系統,Java和Scala中的可視化系統。使用高級數據結構和算法,Smile可以提供最先進的性能。微笑有充分的記錄,請訪問項目網站以獲取編程指南和更多信息。
微笑涵蓋了機器學習的各個方面,包括分類,回歸,聚類,關聯規則挖掘,特徵選擇,多種學習,多維縮放,遺傳算法,缺失價值插補,有效的最近的鄰居搜索等。
微笑實現以下主要的機器學習算法:
分類:支持向量機,決策樹,adaboost,梯度提升,隨機森林,邏輯回歸,神經網絡,RBF網絡,最大熵分類器,KNN,幼稚的貝葉斯,Fisher/linear/quadratic/quadratic/quadratic/Quartimized Incliminization判別分析。
回歸:支持矢量回歸,高斯工藝,回歸樹,梯度提升,隨機森林,RBF網絡,OLS,Lasso,Elasticnet,Ridge回歸。
特徵選擇:基於遺傳算法的特徵選擇,基於集合學習的特徵選擇,心理,信號噪聲比,總和比率。
聚類:樺木,Clarans,DBSCAN,DENCLUE,確定性退火,K-均值,X均值,G-均值,神經氣體,神經氣體,增長的神經氣體,分層聚類,順序信息瓶頸,自組織圖,光譜群集,光譜聚類,最低熵聚類。
關聯規則和頻繁的項目集開採: FP-GROWTH挖掘算法。
多種學習: ISOMAP,LLE,LAPLACIAN EIGENMAP,T-SNE,UMAP,PCA,內核PCA,概率PCA,GHA,GHA,隨機投影,ICA。
多維縮放:經典MDS,等滲MDS,Sammon映射。
最近的鄰居搜索: BK-Tree,Cover Tree,KD-Tree,Simhash,LSH。
序列學習:隱藏的馬爾可夫模型,條件隨機字段。
自然語言處理:句子分配器和令牌,BigRAM統計測試,短語提取器,關鍵字提取器,Stemmer,POS標記,相關性排名
您可以通過Maven Central存儲庫來使用庫來通過將以下內容添加到項目pom.xml文件中。
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
對於NLP,請使用Artifactid Smile-NLP。
對於Scala API,請使用
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
對於Kotlin API,將以下內容添加到Gradle Build腳本的dependencies項部分中。
implementation("com.github.haifengl:smile-kotlin:4.0.0")
對於Clojure API,將以下依賴關係添加到您的項目或構建文件:
[org.clojars.haifengl/smile "4.0.0"]
某些算法依賴於Blas和Lapack(例如流形學習,一些聚類算法,高斯過程回歸,MLP等)。要使用這些算法,您應該包括OpenBlas以優化矩陣計算:
libraryDependencies ++= Seq(
"org.bytedeco" % "javacpp" % "1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "openblas" % "0.3.28-1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "arpack-ng" % "3.9.1-1.5.11" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64"
)
在此示例中,我們包括所有支持的64位平台,並過濾掉32位平台。用戶應僅包括所需的平台來節省空間。
如果您喜歡其他BLAS實現,則可以使用“ org.bytedeco.openblas.load” System屬性指定“ Java.library.path”或類路徑上的任何庫。例如,要使用Mac OS X上的加速框架中的BLAS庫,我們可以通過選項,例如-Dorg.bytedeco.openblas.load=blas 。
如果您有MKL的默認安裝,或者簡單地包含包括MKL二進製文件的完整版本的以下模塊,則微笑將自動切換到MKL。
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile採用雙重許可模型,旨在滿足商業分銷商(例如OEM,ISV和VAR)和開源項目的開發和分銷需求。有關詳細信息,請參閱許可證。
Smile帶有Java,Scala和Kotlin的互動外殼。從“發行”頁面下載預包裝的微笑。在微笑的主目錄中,輸入
./bin/smile
輸入Scala Shell。您可以在外殼中運行任何有效的Scala表達式。在最簡單的情況下,您可以將其用作計算器。此外,所有高級微笑操作員都在外殼中預定義。默認情況下,外殼最多使用75%的內存。如果您需要更多內存來處理大數據,請使用選項-J-Xmx或-XX:MaxRAMPercentage 。例如,
./bin/smile -J-Xmx30G
您還可以為內存和其他JVM設置修改配置文件./conf/smile.ini 。
要使用Java的Jshell,請輸入
./bin/jshell.sh
在班級路徑中有微笑的罐子。同樣,運行
./bin/kotlin.sh
輸入kotlin repl。
大多數模型都支持Java Serializable接口(所有分類器都支持Serializable接口),以便您可以在Spark中使用它們。 ProtoStuff是一個不錯的替代方法,可支持前後兼容性(架構演變)和驗證。除了XML之外,ProtoStuff還支持許多其他格式,例如JSON,YAML,Protobuf等。
Smile提供了一個基於揮桿的數據可視化庫SmilePlot,該庫提供了散點圖,線圖,樓梯圖,條圖,盒子圖,直方圖,3D直方圖,樹狀圖,熱圖,Hexmap,Hexmap,QQ圖,輪廓圖,表面和線框。
要使用SmilePlot,請添加以下依賴項
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
微笑還支持聲明方法中的數據可視化。使用smile.plot.vega package ,我們可以創建一個規範,將可視化描述為從數據到圖形標記屬性(例如,點或欄)的映射。該規範基於Vega-Lite。 Vega-Lite編譯器會自動產生可視化組件,包括軸,傳奇和鱗片。然後,它根據一組精心設計的規則來確定這些組件的屬性。
內核PCA | ISOMAP |
多維縮放 | SOM |
神經網絡 | SVM |
分層聚類 | X均值 |
dbscan | 神經氣 |
小波 | 指數家庭混合物 |