linux(ubuntu) mlpack C++开发笔记
一般在项目开发中,对算法进行性能评估的时候,我会选择python进行数据处理,以及算法评估,评估完成后,为了将算法整合进项目中,就得利用C++/C来实现,主要是因为在涉及大批量数据处理时,python的效率实在捉襟见肘.
mlpack是一个利用C++编写的机器学习库,以其强大,灵活著称.官网地址: http://www.mlpack.org/
官网也有安装指南https://www.mlpack.org/doc/mlpack-3.1.1/doxygen/build.html,从源码编译,过程摘抄如下:
需要先安装一些依赖:
#include <stdio.h>
#include "mlpack/core.hpp"
#include "mlpack/core.hpp"
#include "mlpack/core/data/load.hpp"
#include "mlpack/methods/kmeans/kmeans.hpp"
using namespace arma;
using namespace mlpack;
using namespace mlpack::kmeans;
int main(){
std::cout<<"loading data"<<endl;
arma::mat dataset;//matrice
arma::mat centroids;// 聚类的中心点
arma::Row<size_t> assignments;//result
bool loaded = mlpack::data::Load("src_file.csv", dataset);//dataset 存储读入的数据, mlpack的读入的数据是以列为存储对象的,load函数会自动
//完成转置
if(load == false){return -1;}
KMeans<>k;//全部选择默认配置
k.Cluster(dataset, 2, assignments, centroids);//2 代表分为两类, assignments存储每个数据对应的类别
//输出结果
for(auto i = 0; i < assignments.size(); i++){
std::cout<<assignments.col(i)<<std::endl;
}
return 0;
}
编译语句:
g++ -g src.cpp -std==c++11 -o test.o -lmlpack -larmadillo
更多示例在:https://www.mlpack.org/doc/mlpack-3.1.1/doxygen/kmtutorial.html
//遇到无法连接到mllpack的error :export LD_LIBRARY_PATH=/usr/local/lib
//遇到其他无法找到的*.so, 先找到so文件的位置:/home/anaconda3/lib/*.so,接着:
export LD_LIBRARY_PATH="/home/anaconda3/lib/:$LD_LIBRARY_PATH"