Smile(统计机器智能和学习引擎)是一种快速而全面的机器学习、NLP、线性代数、 Java 和 Scala 中的图形、插值和可视化系统。 凭借先进的数据结构和算法,Smile 提供 最先进的性能。微笑是有据可查的,拜托 查看 Project 网站以获取编程指南和更多信息。
Smile 涵盖机器学习的各个方面,包括分类、 回归、聚类、关联规则挖掘、特征选择、 流形学习 多维缩放 遗传算法 / 缺失值插补、高效的最近邻搜索等。
Smile 实现了以下主要的机器学习算法:
-
分类:支持向量机、决策树、AdaBoost、梯度提升、 随机森林 / Logistic 回归 / 神经网络 / RBF 网络 / 最大熵分类器 , KNN, 朴素贝叶斯 / Fisher/线性/二次/正则化判别分析。
-
回归:支持向量回归 高斯过程 回归树 / 梯度提升、随机森林、RBF 网络、OLS、LASSO、ElasticNet、 岭回归。
-
功能选择:基于遗传算法的特征选择,基于集成学习的特征 选择、TreeSHAP、信号噪声比、和方比。
-
聚类:BIRCH, CLARANS, DBSCAN, DENCLUE, 确定性退火, K-Means, X 均值、G 均值、神经气体、不断增长的神经气体、分层 聚类 , 顺序信息瓶颈 / 自组织映射 / Spectral Clustering(光谱聚类)、Minimum Entropy Clustering(最小熵聚类)。
-
关联规则和频繁的项目集挖掘:FP-growth 挖矿算法。
-
流形学习:IsoMap、LLE、拉普拉斯特征图、t-SNE、UMAP、PCA、内核 PCA、 概率 PCA、GHA、随机投影、ICA。
-
多维缩放:经典 MDS、等渗 MDS、Sammon 映射。
-
最近邻搜索:BK-Tree、Cover Tree、KD-Tree、SimHash、LSH。
-
序列学习:隐马尔可夫模型,条件随机场。
-
自然语言处理:句子拆分器和分词器、二元语法统计测试、短语提取器、 关键字提取器、词干提取器、POS 标记、相关性排名
您可以通过 Maven 中央存储库使用库,方法是将 following 添加到您的项目 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 构建脚本。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 实现,则可以使用
“java.library.path”或类路径上,通过使用
“org.bytedeco.openblas.load” 系统属性。例如,要使用 BLAS
库,我们可以传递诸如
如。-Dorg.bytedeco.openblas.load=blas
如果您默认安装了 MKL 或只包含以下内容 模块中包含完整版 MKL 二进制文件,Smile 将自动 切换到 MKL。
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile 带有适用于 Java、Scala 和 Kotlin 的交互式 shell。 从发布页面下载预打包的 Smile。 在 Smile 的主目录中,键入
./bin/smile
进入 Scala shell。您可以运行任何有效的 Scala 表达式
在 shell 中。在最简单的情况下,您可以将其用作计算器。
此外,所有高级 Smile 运算符都在 shell 中预定义。
默认情况下,shell 使用高达 75% 的内存。如果您需要更多内存
要处理大型数据,请使用选项 或 。
例如-J-Xmx
-XX:MaxRAMPercentage
./bin/smile -J-Xmx30G
您还可以修改
memory 和其他 JVM 设置。./conf/smile.ini
要使用 Java 的 JShell,请键入
./bin/jshell.sh
它在 Classpath 中有 Smile 的 jar。同样,运行
./bin/kotlin.sh
输入 Kotlin REPL。
大多数模型都支持 Java 接口(所有分类器
do support 接口),以便您可以在 Spark 中使用它们。Protostuff 是一个不错的选择,它支持向前-向后兼容性
(架构演变)和验证。除了 XML,Protostuff 还支持许多
其他格式,如 JSON、YAML、protobuf 等。Serializable
Serializable
Smile 提供了一个基于 Swing 的数据可视化库 SmilePlot, 提供散点图、折线图、阶梯图、条形图、 箱形图, 直方图, 3D 直方图, 树状图, 热图, 六边形图, QQ 图、等值线图、曲面和线框。
要使用 SmilePlot,请将以下内容添加到依赖项中
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
Smile 还支持声明式方法的数据可视化。
使用 ,我们可以创建一个规范
将可视化描述为从数据到属性的映射
图形标记(例如,点或条形)。规范是
基于 Vega-Lite。这
Vega-Lite 编译器自动生成可视化组件
包括轴、图例和刻度。然后,它确定属性
基于一组精心设计的规则。smile.plot.vega package