zoukankan      html  css  js  c++  java
  • ubuntu 16.04 上编译和安装C++机器学习工具包mlpack并编写mlpack-config.cmake | tutorial to compile and install mplack on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/1cd6a04d/,欢迎阅读最新内容!

    tutorial to compile and install mplack on ubuntu 16.04

    Guide

    mlpack: a scalable C++ machine learning library

    dependencies

    • Armadillo >= 6.500.0
    • Boost
    • CMake >= 3.3.2

    Armadillo: c++ linear algebra library based on LAPACK and BLAS
    If you are compiling Armadillo by hand, ensure that LAPACK and BLAS are enabled.

    see OpenCV vs. Armadillo vs. Eigen on Linux

    sudo apt-get install libarmadillo-dev
    

    install

    apt-get

    sudo apt-get install libmlpack-dev
    

    version: 2.0.1
    by default mlpack will install to /usr/include/mlpack and /usr/lib

    compile

    wget https://www.mlpack.org/files/mlpack-3.1.1.tar.gz
    git clone https://github.com/mlpack/mlpack.git
    mkdir build && cd build && cmake-gui ..
    make -j8
    sudo make install
    

    configure and output

    ...
    Found Armadillo: /usr/lib/libarmadillo.so (found suitable version "6.500.5", minimum required is "6.500.0") 
    Armadillo libraries: /usr/lib/libarmadillo.so
    ...
    

    version: 3.1.1
    by default mlpack will install to /usr/local/include and /usr/local/lib/libmlpack.so.3.1

    usage

    mlpack-config.cmake

    #.rst:
    # FindMLPACK
    # -------------
    #
    # Find MLPACK
    #
    # Find the MLPACK C++ library
    #
    # Using MLPACK::
    #
    #   find_package(MLPACK REQUIRED)
    #   include_directories(${MLPACK_INCLUDE_DIRS})
    #   add_executable(foo foo.cc)
    #   target_link_libraries(foo ${MLPACK_LIBRARIES})
    #
    # This module sets the following variables::
    #
    #   MLPACK_FOUND - set to true if the library is found
    #   MLPACK_INCLUDE_DIRS - list of required include directories
    #   MLPACK_LIBRARIES - list of libraries to be linked
    #   MLPACK_VERSION_MAJOR - major version number
    #   MLPACK_VERSION_MINOR - minor version number
    #   MLPACK_VERSION_PATCH - patch version number
    #   MLPACK_VERSION_STRING - version number as a string (ex: "1.0.4")
    
    
    # UNIX paths are standard, no need to specify them.
    find_library(MLPACK_LIBRARY
    	NAMES mlpack
    	PATHS "$ENV{ProgramFiles}/mlpack/lib"  "$ENV{ProgramFiles}/mlpack/lib64" "$ENV{ProgramFiles}/mlpack"
    )
    find_path(MLPACK_INCLUDE_DIR
    	NAMES mlpack/core.hpp mlpack/prereqs.hpp
    	PATHS "$ENV{ProgramFiles}/mlpack"
    )
    
    
    if(MLPACK_INCLUDE_DIR)
    	# Read and parse mlpack version header file for version number
    	file(STRINGS "${MLPACK_INCLUDE_DIR}/mlpack/core/util/version.hpp" _mlpack_HEADER_CONTENTS REGEX "#define MLPACK_VERSION_[A-Z]+ ")
    	string(REGEX REPLACE ".*#define MLPACK_VERSION_MAJOR ([0-9]+).*" "\1" MLPACK_VERSION_MAJOR "${_mlpack_HEADER_CONTENTS}")
    	string(REGEX REPLACE ".*#define MLPACK_VERSION_MINOR ([0-9]+).*" "\1" MLPACK_VERSION_MINOR "${_mlpack_HEADER_CONTENTS}")
    	string(REGEX REPLACE ".*#define MLPACK_VERSION_PATCH ([0-9]+).*" "\1" MLPACK_VERSION_PATCH "${_mlpack_HEADER_CONTENTS}")
    	
    	unset(_mlpack_HEADER_CONTENTS)
    	
    	set(MLPACK_VERSION_STRING "${MLPACK_VERSION_MAJOR}.${MLPACK_VERSION_MINOR}.${MLPACK_VERSION_PATCH}")
    endif()
    
    find_package_handle_standard_args(MLPACK
    	REQUIRED_VARS MLPACK_LIBRARY MLPACK_INCLUDE_DIR
    	VERSION_VAR MLPACK_VERSION_STRING
    )
    
    if(MLPACK_FOUND)
    	set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIR})
    	set(MLPACK_LIBRARIES ${MLPACK_LIBRARY})
    endif()
    
    # Hide internal variables
    mark_as_advanced(
    	MLPACK_INCLUDE_DIR
    	MLPACK_LIBRARY
    )
    

    From here

    CMakeLists.txt

    find_package(MLPACK REQUIRED)
    MESSAGE( [Main] " MLPACK_INCLUDE_DIRS = ${MLPACK_INCLUDE_DIRS}") 
    MESSAGE( [Main] " MLPACK_LIBRARIES = ${MLPACK_LIBRARIES}")  
    # /usr/local/include
    # /usr/local/lib/libmlpack.so
    

    mlpack clustering

    see mlpack clustering

    kmeans

    skip now.

    meanshift

    dbscan

    sklearn clustering

    from sklearn.cluster import MeanShift
    from sklearn.cluster import DBSCAN
    from sklearn.cluster import KMeans
    

    see sklearn clustering

    opencv clustering

    • cv::kmeans()

    see opencv clustering

    Reference

    History

    • 20190520: created.

    Copyright

  • 相关阅读:
    【Apollo】Apollo 分布式部署
    【Spring】SpringBatch快速入门
    Nacos、Apollo、Spring Cloud Config微服务配置中心对比
    IDEA或Android Studio用书签功能标识代码 Stars
    Jetpack架构组件学习(0)——总结篇 Stars
    Android Studio导出APP的数据库db文件 Stars
    Jetpack架构组件学习(1)——LifeCycle的使用 Stars
    JavaFx Tooltip悬浮提示使用及自定义 Stars
    JavaFx WebView使用研究 Stars
    Jetpack架构组件学习(2)——ViewModel和Livedata使用 Stars
  • 原文地址:https://www.cnblogs.com/kezunlin/p/11933153.html
Copyright © 2011-2022 走看看