当前位置:   article > 正文

Shark机器学习库(c++)开发环境搭建教程【超级详细】win10、包含boost安装、编译、环境配置等_c++shark库如何配置环境

c++shark库如何配置环境

 

目录

一、安装boost

1. exe安装boost:

2. 其他方式安装boost:

二、下载shark3.0 、cmake

三、用cmake构建shark项目

四、生成shark_debug.lib库

五、在其他项目中使用shark


如果文章对你有帮助,请帮我点个赞,谢谢 : )

测试环境:

  • Win10
  • boost1.73
  • shark3.0
  • cmake(随便)

环境最好与我相同,如果不同会有一定问题,比如说boost1.83有的header已经弃用,但是shark3.0还在用


一、安装boost

shark库依赖boost库所以在装shark库之前需要先安装boost

1. exe安装boost:

其中有三种方式,最推荐直接官网exe安装:选择1.73.0_b1(如果是exe安装后缀是b1,省去了编译过程!本地编译会有很多坑)

Boost C++ Libraries - Browse /boost-binaries at SourceForge.netboost官网:Boost C++ Libraries - Browse /boost-binaries at SourceForge.net

随便装到你想要的地方后配置boost环境变量:

  1. D:\software\boost_1_73_0_b1_rc1
  2. D:\software\boost_1_73_0_b1_rc1\lib64-msvc-14.2

做个测试看看能不能运行:

VS配置boost-CSDN博客

2. 其他方式安装boost:

win10下boost安装的三种方式,及cmake编译boost代码例子_windows安装boost-CSDN博客

自己总结的一些安装问题,如果你非要本地编译

boost编译bootstrap.bat失败,无法打开ctype.h,cl找不到问题汇总-CSDN博客


二、下载shark3.0 、cmake

shark3.0:Downloads — Shark 3.0a documentation

cmake:https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FKitware%2FCMake%2Freleases%2Fdownload%2Fv3.18.0-rc2%2Fcmake-3.18.0-rc2-win64-x64.zip


三、用cmake构建shark项目

随便解压cmake到任何地方,因为它只是一个生成工程的工具,shark3.0也是随便放在哪里,在cmake中选择 browse source(就是shark解压的位置),browse build随便,我就直接在D:\software\Shark-3.0.0中自己创建了一个build文件夹了(这里出现红色界面是因为我已经有内容在build里了,正常这里不显示这个红色界面)

点击cinfigue、finish

应该不会有错误的,然后点击Generate,就会在刚刚设置的路径下生成sharkVS工程文件了。


四、生成shark_debug.lib库

打开 shark.sln 文件后,生成shark_debug.lib

  1. 点击生成:在 Visual Studio 菜单栏上,选择“生成”(Build)>“生成解决方案”(Build Solution),或者使用快捷键 F7。这将开始构建整个 Shark 解决方案,并生成库文件和其他项目输出。
  2. 一旦构建成功系统将在你当前项目的lib文件夹下生成Debug或者Release文件夹(取决于你VS的设置)在这个文件夹下就可以找到shark_debug.lib。然后就可以在其他工程中使用include头文件和刚生成的shark_debug.lib了,其中include文件夹需要使用shark3.0解压出来自带的include文件夹而不是刚刚cmake构建出来的工程那个。以我的项目为例那就是使用这个:D:\software\Shark-3.0.0\include
  3. 将D:\software\Shark-3.0.0\build\include\shark\Core中生成的Shark.h文件丢到D:\software\Shark-3.0.0\include\shark\Core中去,如果你不想丢进去,那你就VS中多写一个附加包含目录D:\software\Shark-3.0.0\build\include

如果报错:

1)error C2065: “M_PI”: 未声明的标识符"

VS2017 C++ 程序报错“error C2065: “M_PI”: 未声明的标识符"_m_pi 未声明的标识符-CSDN博客

2)make_iterator_range 找不到标识符。

在错误行前面添加boost::

3)shark::size()对重载函数调用不明确

在错误处添加shark::

4)cout 不是std成员

添加头文件#include <iostream>

5)运行时缺少xxxxx.dll

找到这个dll文件,将其拷贝到项目Debug文件内


五、在其他项目中使用shark

如图所示在项目配置shark的附加包含目录、附加库目录、附加依赖项

以下是测试代码:

  1. #include <shark/Data/Csv.h>
  2. #include <shark/Algorithms/Trainers/LDA.h>
  3. using namespace shark;
  4. #include <iostream>
  5. using namespace std;
  6. int main(int argc, char** argv) {
  7. //create a Dataset from the file "quickstartData"
  8. if (argc < 2) {
  9. cerr << "usage: " << argv[0] << " (filename)" << endl;
  10. exit(EXIT_FAILURE);
  11. }
  12. ClassificationDataset data;
  13. try {
  14. importCSV(data, argv[1], LAST_COLUMN, ' ');
  15. }
  16. catch (...) {
  17. cerr << "unable to read data from file " << argv[1] << endl;
  18. exit(EXIT_FAILURE);
  19. }
  20. //create a test and training partition of the data
  21. ClassificationDataset test = splitAtElement(data, static_cast<std::size_t>(0.8 * data.numberOfElements()));
  22. //create a classifier for the problem
  23. LinearClassifier<> classifier;
  24. //create the lda trainer
  25. LDA lda;
  26. //train the classifier using the training portion of the Data
  27. lda.train(classifier, data);
  28. //now use the test data to evaluate the model
  29. //loop over all points of the test set
  30. //be aware that in this example a single point consists of an input and a label
  31. //this code here is just for illustration purposes
  32. unsigned int correct = 0;
  33. BOOST_FOREACH(ClassificationDataset::element_reference point, test.elements()) {
  34. unsigned int result = classifier(point.input);
  35. if (result == point.label) {
  36. correct++;
  37. }
  38. }
  39. //print results
  40. cout << "RESULTS: " << endl;
  41. cout << "========\n" << endl;
  42. cout << "test data size: " << test.numberOfElements() << endl;
  43. cout << "correct classification: " << correct << endl;
  44. cout << "error rate: " << 1.0 - double(correct) / test.numberOfElements() << endl;
  45. }

运行程序后,如果正确的话,会得到如下的结果。

这样就说明你的开发库没有问题了。后面就可以跟着官方上面的例子一步一步的学习这个强大的机器学习库了!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/505359
推荐阅读
相关标签
  

闽ICP备14008679号