全面的数据科学C/C++机器学习库整理,再也不用百度搜了
引言和动机--为什么是C++?
C++是动态负载平衡、自适应缓存、开发大型数据框架和库的理想选择。谷歌的MapReduce,MunGDB,下面列出的大多数深度学习库都是用C++实现的。以超低延迟和极高吞吐量著称的Scylla,使用C++作为Apache Casand and Amazon DynDoDB的替代者进行编码。
C++作为编程语言(包括内存管理、性能特性和系统编程)的一些独特优势,绝对是开发快速可扩展的数据科学和大数据库最有效的工具之一。
此外,Julia(由麻省理工学院开发的一种编译的交互式语言)正在成为Python在科学计算和数据处理领域的潜在竞争对手。其快速处理速度、并行性、静态以及动态键入和用于插入库的 C++ 绑定功能,简化了开发人员/数据科学家集成和使用 C++ 作为数据科学和大数据库的工作。
1. 来自谷歌AI的TensorFlow
由 Google 开发的热门深度学习库,它拥有自己的工具、库和社区资源生态系统,使研究人员和开发人员能够轻松构建和部署 ML 支持的应用程序。
官方文档:https://www.tensorflow.org/lite/microcontrollers/library
GitHub:https://github.com/tensorflow/serving
2. Berkeley(伯克利)的Caffe
伯克利视觉和学习中心开发了用于快速功能嵌入或 Caffe C++卷积架构的深度学习框架。
GitHub:https://github.com/intel/caffe
3. 微软认知工具包 (CNTK)
微软认知工具包是一个统一的深度学习工具包,它通过定向图帮助将神经网络翻译为一系列计算步骤。
GitHub:https://github.com/microsoft/CNTK
4. mlpack 库
mlpack是一个快速、灵活的机器学习库,用 C++编写,提供具有 Python 绑定、Julia 绑定和 C++ 类的最先进的机器学习算法。
GitHub:https://github.com/mlpack/mlpack
5. DyNet
动态神经网络工具包(支持动态计算图形)或 DyNet 是一种用 C++ (在 Python 中具有绑定)编写的高性能神经网络库,可以在 CPU 或 GPU 上高效运行。它支持自然语言处理、图形结构、强化学习等。
GitHub:https://github.com/clab/dynet
6. Shogun
Shogun 是一个开源机器学习库,它提供广泛的高效和统一的机器学习方法,如多种数据表示、算法类和通用工具的组合,用于快速原型设计数据管道。
GitHub:https://github.com/shogun-toolbox/shogun
7. FANN
快速人工神经网络(FANN)是C语言中的多层人工神经网络,支持完全连接和稀疏连接的网络。它支持固定点和浮点中的跨平台执行。此外,它还支持基于拓扑的不断发展训练和基于反传播的DL模型培训。
GitHub:https://github.com/libfann/fann
8. OpenNN
开放神经网络 (OpenNN) 是一个开源 (C/C++) 神经网络高性能库,用于高级分析,支持分类、回归、预测等。
GitHub:https://github.com/Artelnics/opennn
9. SHARK库
Shark 是一个快速、模块化、通用的开源机器学习库 (C/C++),用于应用和研究,支持线性和非线性优化、基于内核的学习算法、神经网络以及各种其他机器学习技术。
GitHub:https://github.com/Shark-ML/Shark
10. Armadillo
Armadillo 是一个线性代数 (C/C++) 库,其功能类似于 Matlab。该库以快速将研究代码转换为生产环境、模式识别、计算机视觉、信号处理、生物信息学、统计学、计量经济学等而著名。
11. Faisis
faiss:此库(C/C++)用于高效相似性搜索和密集向量聚类。它包含以任何大小的向量集进行搜索的算法,这些向量可能不适合 RAM 中的矢量集。它还支持通过 CUDA 提供的可选 GPU 和可选 Python 接口。
GitHub:https://github.com/facebookresearch/faiss
12.随机森林
- https://github.com/zhufangzhou/RandomForest
- https://github.com/bjoern-andres/random-forest
13. Boosting
XGBoost – 并行优化的通用梯度提升库。
GitHub:https://github.com/dmlc/xgboost
ThunderGBM – 用于 GPU 上的 GBDTs 和随机森林的快速库。
GitHub:https://github.com/Xtra-Computing/thundergbm
LightGBM – 基于决策树算法的快速、分布式、高性能梯度提升(GBDT、GBRT、GBM 或 MART)框架,用于排名、分类和许多其他机器学习任务。
GitHub:https://github.com/Microsoft/LightGBM
CatBoost – 决策树库上的通用梯度提升,具有开箱即用的分类功能支持。它易于安装,包含快速推理实现,并支持 CPU 和 GPU(甚至多 GPU)计算。
GitHub:https://github.com/catboost/catboost
14. 推荐系统
Recommender(推荐) – 一个 C 语言库,使用协作过滤(CF)进行产品推荐/建议。
GitHub:https://github.com/GHamrouni/Recommender
混合推荐系统 – 基于scikit学习算法的混合推荐系统。
GitHub:https://github.com/SeniorSA/hybrid-rs-trainner
15. 自然语言处理
BLLIP 解析器 -- BLLIP 自然语言解析器(也称为查尼亚克 -约翰逊解析器)。
GitHub:https://github.com/BLLIP/bllip-parser
colibri-core -- C++库、命令行工具和 Python 绑定,用于快速、高效记忆地提取和处理基本语言结构(如 n-gram 和 skiagram)。
GitHub:https://github.com/proycon/colibri-core
CRF++ -- 用于分段/标记顺序数据的条件随机字段 (CLF) 的开源实现和其他自然语言处理任务。[已弃用]
GitHub:https://github.com/taku910/crfpp
CRFsuite -- CRFifsuite 是用于标记顺序数据的条件随机字段 (CLF) 的实现。[已弃用]
GitHub:https://github.com/chokkan/crfsuite
CRF 模型 -- 基于不同深度学习的 CRF模型。frog --为荷兰语开发的基于内存的NLP套件:PoS 标记器、lemmatizer、依赖分析器、NER、浅层解析器、形态分析仪。
GitHub:https://github.com/topics/crf-model
MeTA -- ModErn 文本分析是一个 C++ 数据科学工具包,有助于挖掘大文本数据,包括文本标记化,包括解析树、主题模型、分类算法、图形算法、语言模型、多线程算法等深层语义功能。
官方文档:https://meta-toolkit.org/
MIT信息提取工具包 -- C、C++ 和 Python 工具,用于命名实体识别和关系提取
GitHub:https://github.com/mit-nlp/MITIE
ucto -- 用于各种语言的 Unicode 感知正则表达式标记器、工具和C++库,支持 FoLiA 格式。
GitHub:https://github.com/LanguageMachines/ucto
16. 数据流挖掘
StreamDM: 适用于挖掘支持以下算法的大数据流。
GitHub:https://github.com/huawei-noah/streamDM-Cpp
SGD 学习者和感知器:
- 朴素贝叶斯
- CluStream
- Hoeffding决策树
- Bagging
- 流KM ++
数据产生器:
- HyperplaneGenerator
- RandomTreeGenerator
- RandomRBFGenerator
- RandomRBFEventsGenerator
17. 数据结构/图形/动态编程算法
GitHub:https://github.com/TheAlgorithms/C-Plus-Plus
18. 通用机器学习
Darknet -- Darknet是一个开源神经网络框架,用 C 和 CUDA 编写,支持 CPU 和 GPU 计算。
GitHub:https://github.com/pjreddie/darknet
cONNXr -- ONNX 运行时以纯 C (99) 编写,零依赖关系集中在小型嵌入式设备上。对机器学习模型进行推理,无论您使用哪个框架进行训练。易于安装和编译无处不在,即使在非常旧的设备。
GitHub:https://github.com/alrevuelta/cONNXr
BanditLib -- 一个简单的多臂Bandit库。[已弃用]
GitHub:https://github.com/jkomiyama/banditlib
CUDA -- 这是一个快速 C++/CUDA 实现卷积深度学习
官方文档:https://code.google.com/p/cuda-convnet/
DeepDetect -- 一个用 C++ 11编写的机器学习API和服务器。它使最先进的机器学习易于使用并集成到现有应用程序中。
GitHub:https://github.com/jolibrain/deepdetect
分布式机器学习工具包 (DMTK) -- 微软的分布式机器学习(参数服务器)框架。在多台机器上启用大型数据集的训练模型。与它捆绑的当前工具包括:LightLDA 和分布式(多感)字嵌入。
官网:https://www.dmtk.io/(已停用)
DLib -- 一套 ML 工具,设计为易于在其他应用中安装。
官网:http://dlib.net/ml.html
DSSTNE -- 由亚马逊创建的软件库,用于使用 GPU 训练和部署深度神经网络,该软件库强调速度和扩展性,而不是实验灵活性。
GitHub:https://github.com/amazon-archives/amazon-dsstne
Fido -- 用于嵌入式电子和机器人技术的高度模块化 C++ 机器学习库。
GitHub:https://github.com/FidoProject/Fido
igraph -- 通用图形库。
官方文档:https://igraph.org/
英特尔DAAL -- 由英特尔开发并针对英特尔架构进行优化的高性能软件库。库为数据分析的所有阶段提供了算法构建块,并允许以批处理,联机和分布式模式处理数据。
GitHub:https://github.com/oneapi-src/oneDAL
libfm -- 一种通用方法,可以通过特征工程模拟大多数分解模型。
GitHub:https://github.com/srendle/libfm
MLDB -- 机器学习数据库是为机器学习而设计的数据库。通过RESTful API发送命令以存储数据,使用SQL探索数据,然后训练机器学习模型,并将其公开为API。
官方文档:https://mldb.ai/
MXNet -- 具有动态,可感知突变的Dataflow Dep Scheduler的轻量,便携式,灵活的分布式/移动深度学习;适用于Python,R,Julia,Go,Javascript等。
GitHub:https://github.com/apache/incubator-mxnet
proNet-core -- 通用网络嵌入框架:成对表示优化Network Edit。
GitHub:https://github.com/cnclabs/proNet-core
PyCUDA -- CUDA的Python接口
官方文档:https://mathema.tician.de/software/pycuda/
ROOT -- 模块化的科学软件框架。它提供了处理大数据处理,统计分析,可视化和存储所需的所有功能。
官网:https://root.cern.ch/
sofia-ml -- 快速增量算法套件。
官网:https://code.google.com/archive/p/sofia-ml
Stan -- 一种概率编程语言,利用汉密尔顿蒙特卡洛采样实现完整的贝叶斯统计推断。
官方文档:https://mc-stan.org/
Timbl -- 一种软件包/ C ++库,实现了几种基于内存的学习算法,其中IB1-IG是k最近邻分类的实现,而IGTree是IB1-IG的决策树近似,常用于NLP。
GitHub:https://languagemachines.github.io/timbl/
Vowpal Wabbit(VW) -- 一个快速的核心学习系统。
GitHub:https://github.com/VowpalWabbit/vowpal_wabbit
Warp-CTC -- 在CPU和GPU上快速并行地实现连接主义时间分类(CTC)。
GitHub:https://github.com/baidu-research/warp-ctc
ThunderSVM -- 在GPU和CPU上的快速SVM库。
GitHub:https://github.com/Xtra-Computing/thundersvm
LKYDeepNN -- 仅标头的 C++11 神经网络库。低依赖性,本地繁体中文文档。
GitHub:https://github.com/mosdeo/LKYDeepNN
xLearn -- 高性能,易于使用且可扩展的机器学习套件,可用于解决大规模的机器学习问题。 xLearn对于解决大规模稀疏数据上的机器学习问题特别有用,这在Internet服务(例如在线广告和推荐系统)中非常常见。
GitHub:https://github.com/aksnzhy/xlearn
Featuretools –一个用于自动特征工程的库。它擅长使用可重复使用的特征工程“基元”将事务和关系数据集转换为用于机器学习的特征矩阵。
GitHub:https://github.com/FeatureLabs/featuretools
skynet -- 用于学习神经网络的库,具有C接口,在JSON中设置了网。用C ++编写,并使用Python,C ++和C#进行绑定。
GitHub:https://github.com/Tyill/skynet
Feast -- 用于管理,发现和访问机器学习功能的功能存储。 Feast可为模型训练和模型服务提供一致的特征数据视图。
GitHub:https://github.com/feast-dev/feast
Hopsworks -- 具有AI的数据密集型平台,具有业界首个开源功能存储。 Hopsworks Feature Store既提供了用于基于Apache Hive进行培训和批处理的功能库,又为在线应用程序提供了基于MySQL Cluster的功能服务数据库。
GitHub:https://github.com/logicalclocks/hopsworks
Polyaxon -- 一个可重现和可扩展的机器学习和深度学习的平台。
GitHub:https://github.com/polyaxon/polyaxon
sara -- C ++计算机视觉库,具有易于理解且高效的计算机视觉算法实现。 [Mozilla Public License版本2.0]
GitHub:https://github.com/DO-CV/sara
ANNetGPGPU -- 基于GPU(CUDA)的人工神经网络库。 [LGPL]
GitHub:https://github.com/ANNetGPGPU/ANNetGPGPU
btsk -- 游戏行为树入门套件。 [zlib]
GitHub:https://github.com/aigamedev/btsk
Evolving Objects -- 基于模板的ANSI-C++演化计算库,可帮助您快速地编写自己的随机优化算法。 [LGPL]
官网:http://eodev.sourceforge.net/
frugally-deep -- 只使用C++中的 KARAS 模型的头文件库。[MIT]
GitHub:https://github.com/Dobiasd/frugally-deep
Genann -- C中的简单神经网络库。[zlib]
GitHub:https://github.com/codeplea/genann
PyTorch -- 具有强大GPU加速功能的Python中的张量和动态神经网络。
GitHub:https://github.com/pytorch/pytorch
Recast / Detour --(3D)导航网格生成器和探路器,主要用于游戏。 [zlib]
GitHub:https://github.com/recastnavigation/recastnavigation
tiny-dnn -- 在C++11中仅有标头,无依赖项的深度学习框架。 [BSD]
GitHub:https://github.com/tiny-dnn/tiny-dnn
Veles -- 用于快速深度学习应用程序开发的分布式平台。 [Apache]
GitHub:https://github.com/DingKe/veles
Kaldi -- 语音识别工具包。 [Apache]
GitHub:https://github.com/kaldi-asr/kaldi
19. 计算机视觉
CCV -- 基于 C/缓存/核心计算机视觉库,一个现代计算机视觉库。
GitHub:https://github.com/liuliu/ccv
VLFeat -- VLFeat 是一个开放和便携式的计算机视觉算法库,它具有 Matlab 工具箱。
官方文档:https://www.vlfeat.org/
EBLearn -- Eblearn 是一个面向对象的 C++库,实现各种机器学习模型 [弃用]
官网:http://eblearn.sourceforge.net/
OpenCV -- OpenCV 具有C++、C、Python、Java 和 MATLAB 接口,并支持 Windows、Linux、Android 和 Mac 操作系统。
官方文档:https://opencv.org/
VIGRA -- VIGRA 是一种通用的C++计算机视觉和机器学习库,用于使用 Python 绑定实现任意维数。
GitHub:https://github.com/ukoethe/vigra
Openpose -- 一个实时多人关键点检测库,用于身体、面部、手和脚的评估。
GitHub:https://github.com/CMU-Perceptual-Computing-Lab/openpose
20. Facebook 研究的FlashLight
FlashLight是一个快速、灵活的机器学习库,完全由Facebook AI Research Speech团队以及Torch和Deep Speech的创建者以C++编写而成。
GitHub:https://github.com/facebookresearch/flashlight
21. 阿里巴巴的MNN(移动神经网络)
MNN 是一个高效、轻量级的深度学习框架。它支持深度学习模型的推理和培训,具有业界领先的设备推理和训练性能。
Gitee:https://gitee.com/mirrors/mnn
22. Facebook 研究的Habitat-SIM