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

 

目录

一、安装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环境变量:

D:\software\boost_1_73_0_b1_rc1
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的附加包含目录、附加库目录、附加依赖项

以下是测试代码:

#include <shark/Data/Csv.h>
#include <shark/Algorithms/Trainers/LDA.h>
using namespace shark;


#include <iostream>
using namespace std;


int main(int argc, char** argv) {
	//create a Dataset from the file "quickstartData"
	if (argc < 2) {
		cerr << "usage: " << argv[0] << " (filename)" << endl;
		exit(EXIT_FAILURE);
	}

	ClassificationDataset data;
	try {
		importCSV(data, argv[1], LAST_COLUMN, ' ');
	}
	catch (...) {
		cerr << "unable to read data from file " << argv[1] << endl;
		exit(EXIT_FAILURE);
	}

	//create a test and training partition of the data
	ClassificationDataset test = splitAtElement(data, static_cast<std::size_t>(0.8 * data.numberOfElements()));

	//create a classifier for the problem
	LinearClassifier<> classifier;
	//create the lda trainer
	LDA lda;
	//train the classifier using the training portion of the Data
	lda.train(classifier, data);


	//now use the test data to evaluate the model
	//loop over all points of the test set
	//be aware that in this example a single point consists of an input and a label
	//this code here is just for illustration purposes
	unsigned int correct = 0;
	BOOST_FOREACH(ClassificationDataset::element_reference point, test.elements()) {
		unsigned int result = classifier(point.input);
		if (result == point.label) {
			correct++;
		}
	}

	//print results
	cout << "RESULTS: " << endl;
	cout << "========\n" << endl;
	cout << "test data size: " << test.numberOfElements() << endl;
	cout << "correct classification: " << correct << endl;
	cout << "error rate: " << 1.0 - double(correct) / test.numberOfElements() << endl;
}

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIScholar_lrm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值