一、实验目的和内容
实验目的:
1、 理解学习svm算法的意义,进一步了解svm算法的作用
2、 学会调用现在已经相对成熟且权威的svm接口libsvm,熟悉 libsvm的相关操作,接口调用,以及调用过程
3、 真实体验一下svm分类
二、实验过程
1、 下载libSvm和FormatDataLibsvm.xls和课程资源
- 从对分易上下载课程资源
- 下载libsvm http://www.csie.ntu.edu.tw/~cjlin/
- Youtube上观看简单实例https://www.youtube.com/watch?v=gePWtNAQcK8
- 下载FormatDataLibsvm.xls(需要的请移步FormatDataLibsvm.xls链接)
2、 将课程资源中的数据文件转化为svm需要的格式
-
打开FormatDataLibsvm.xls,在弹出来的小提示中选择开启宏
-
Excel中依次点击 “文件”“打开”,选择训练数据,然后在文本导入向导第一步选择原始数据类型、第二部选择空格、第三步选择常规后点完成。数据成功导入
-
点击工具中的宏、选择第二个点执行 如图
执行完成后保存即可,test数据如上操作 -
这里我得到了如下两个文件
3、试用libsvm
上面我们已经下好了livsvm 现在我们依照YouTube的视频 来测试一下能否正常运行
打开cmd,cd到windows目录下 1、训练数据:svm-train.exe a1a.train(此时会生成a1a.train.model文件)2、预测正确率svm-predict.exe a1a.test a1a.train.model a1a.out。此时会输出Accuracy = 83.5864% (25875/30956) (classification)
看来能够正确运行
4、 进行svm分类(未缩放)
- 先把格式转好的训练文件和测试文件转到libsvm库的windows目录下
- 打开cmd命令行输入 svm-train.exe todo.train,结果如下
- 此时打开目录,看到todo.train.modle文件 这便是训练结果了
- 预测一下测试数据
正确率出来了
5、进行svm分类(缩放)
4中没有缩放,现在我在5来缩放一下用svm分类,其他步骤不变,在训练todo.train之前缩放就好了.这里没有截屏到的地方是new_todo.train(缩放区间为-1到1)
然后训练new.todo.train
预测
额,仍然是这么多的正确率
回头看一下数据
缩放也确实生效了,那大概就是这个样子的吧
三、实验结果
实验结果数据(如果有评测要求应包括评测结果,例如分类的准确率)
1、分类的准确率:94.3533%
四、实验总结
做实验之前有去了解SVM的原理推导,发现缺少大量数学知识……,很无奈,我觉得要想深究机器学习,还得先把数学重新学一遍……
对于libsvm在windows下的使用,单纯用windows下的命令行实现还是比较简单的,就是如何数据转化为svm需要的格式,找了好久才找到方法…….
Libsvm针对不同语言有不同接口,但是核心程序也就那么几个核心程序,有了此次经验,以后若需要在高级语言中调用libsvm也更得心应手吧