6.3 选择两个UCI数据集,分别用线性核和高斯核训练一个SVM,并与BP神经网络和C4.5决策树进行实验比较。
解答:
(1) 准备libsvm的训练数据与测试数据
从UCI网站上选择了Iris数据集,这个数据集总共分为3类,每类50个样本,每个实例有四个属性。数据保存在bezdekIris.txt文件中,举一个样本为例:
5.1,3.5,1.4,0.2,Iris-setosa
书中也没有介绍解决多分类问题的SVM,所以这里还是训练两分类SVM。我们取Iris数据集中的任意两类作为实验数据。其中每类各取40个组成训练集,剩下10个组成测试集。用下面的程序生成libsvm的格式化数据:
#-*- coding:gbk -*-
"""
Author: Victoria
Created on 2017.9.30 17:30
"""
pos_train_num = 0
neg_train_num = 0
f1 = open("../../数据/bezdekIris.txt", "r")
f2 = open("iris_train.txt", "w")
f3 = open("iris_test.txt", "w")
for line in f1:
x1, x2, x3, x4, cate = line.strip().split(",")
if cate=="Iris-setosa":
if neg_train_num<40:
f2.write("{} 1:{} 2:{} 3:{} 4:{}\n".format(0, x1, x2, x3, x4))
neg_train_num += 1
else:
f3.write(