机器学习是一门广阔而令人兴奋的学科,吸引了许多领域专家的关注。不幸的是,对于C++程序员和爱好者来说,机器学习领域似乎缺乏支持。为了填补这一空白并让 C++ 在 ML 领域真正立足,编写了这个库。该库的目的是充当低级开发人员和机器学习工程师之间的十字路口。
首先下载 ML++ 库的头文件。您可以通过克隆存储库并提取其中的 MLPP 目录来完成此操作:
git clone https://github.com/novak-99/MLPP
接下来,执行“buildSO.sh”shell 脚本:
sudo ./buildSO.sh
执行此操作后,将 ML++ 源文件维护在本地目录中并以这种方式包含它们:
# include " MLPP/Stat/Stat.hpp " // Including the ML++ statistics module.
int main (){
...
}
最后,创建完项目后,使用 g++ 编译它:
g++ main.cpp /usr/local/lib/MLPP.so --std=c++17
请注意,ML++ 使用std::vector<double>
数据类型来模拟向量,并使用std::vector<std::vector<double>>
数据类型来模拟矩阵。
首先包含您选择的相应头文件。
# include " MLPP/LinReg/LinReg.hpp "
接下来,实例化该类的一个对象。不要忘记将输入集和输出集作为参数传递。
LinReg model (inputSet, outputSet);
然后,调用您想要使用的优化器。对于梯度下降等迭代优化器,请包括学习率、历元数以及是否使用 UI 面板。
model.gradientDescent( 0.001 , 1000 , 0 );
太好了,您现在可以开始测试了!要测试单个测试实例,请使用以下函数:
model.modelTest(testSetInstance);
这将返回模型对该示例的奇异预测。
要测试整个测试集,请使用以下函数:
model.modelSetTest(testSet);
结果将是模型对整个数据集的预测。
ML++ 与大多数框架一样,是动态的、不断变化的。这在机器学习领域尤其重要,因为新的算法和技术正在不断开发。以下是目前正在为 ML++ 开发的一些内容:
- 卷积神经网络
- SVM 内核
- 支持向量回归
在创建 ML++ 的过程中,各种不同的材料为我提供了帮助,我想在此对其中的一些材料表示感谢。 TutorialsPoint 的这篇文章在尝试实现矩阵的行列式时提供了很大的帮助,而 GeeksForGeeks 的这篇文章在尝试求矩阵的伴随和逆时也非常有帮助。