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"