支持向量机在高维或无限维空间中构造超平面或超平面集合,其可以用于分类、回归或其他任务。直观来说,分类边界距离最近的训练数据点越远越好,因为这样可以缩小分类器的泛化误差。
调用sklearn.svm的svc函数,将MNIST数据集进行分类,并将整体分类精度输出,这里用了两种预处理的方法(将特征值变成0或者1的数;将特征值变成0-1区间的数)效果不一样,并且分别调用了两种核函数(高斯核函数和多项式核函数)。在支持向量机实验中,将训练集和测试集都等分成10份,并求十份数据集整体分类精度的平均值,这样的结果较为准确客观。可以通过修改惩罚因子C的大小来看不同的效果,并画出图进行比较,C=100的时候效果较为好。
#任务:比较不同的kernel的结果差异,并画出相应的曲线来直观的表示
import struct
from numpy import *
import numpy as np
import time
from sklearn.svm import SVC#C-Support Vector Classification
def read_image(file_name):
#先用二进制方式把文件都读进来
file_handle=open(file_name,"rb") #以二进制打开文档
file_content=file_handle.read() #读取到缓冲区中
offset=0
head = struct.unpack_from(‘>IIII‘, file_content, offset) # 取前4个整数,返回一个元组
offset += str