微笑(统计机器智能和学习引擎)是一种快速而全面的机器学习,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 | 神经气 |
小波 | 指数家庭混合物 |