linux mlpack C++開發筆記


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,從源碼編譯,過程摘抄如下:

  需要先安裝一些依賴:

  # apt-get install libboost-math-dev libboost-program-options-dev libboost-test-dev libboost-serialization-dev libarmadillo-dev binutils-dev
python-pandas python-numpy cython python-setuptools
  主要用到的是armadillo(一個線性代數庫). boost等,想要看懂源碼的話需要了解一下armadillo的一些常見類型與操作(主要就是矩陣操作).
 
 
  $ wget https: //www.mlpack.org/files/mlpack-3.1.1.tar.gz
  $ tar -xvzpf mlpack-3.1.1.tar.gz
  $ mkdir mlpack-3.1.1/build && cd mlpack-3.1.1/build
  $ cmake ../
  $ make -j4 # The -j is the number of cores you want to use for a build.
  $ sudo make install
 
假設我們已經按照上述步驟完成了安裝,接下來使用kmeans算法對數據進行cluster(選擇最簡單的naive_kmeans,其他方式見--help,或者看一下源碼,注釋很詳細):

#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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM