一、实验目的
- 掌握高斯核支持向量机(SVM)在手写字符识别中的应用。
- 对比调用函数和非调用两种方式实现SVM的效果。
- 探究高斯核(RBF)参数和正则化参数C对SVM性能的影响。
- 分析手写字符的训练和测试误差,评估模型性能。
二、实验原理
支持向量机是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,通过引入核函数,SVM可以处理非线性分类问题。高斯核(RBF核)是一种常用的核函数,能够将数据映射到高维空间,使得原本线性不可分的数据变得线性可分。
三、实验过程
- 加载数据集,划分为训练集和测试集。
- 对图像数据进行标准化处理。
- 使用scikit-learn库的SVC类,指定kernel为'rbf'(高斯核)。
- 通过网格搜索和交叉验证挑选最佳的高斯核参数gamma和正则化参数C。
- 分析不同参数组合对训练和测试误差的影响。
- 在测试集上进行预测,计算训练和测试误差。
四、实验代码
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.svm import SVC
from sklearn.metrics import classification_report
from sklearn.model_selection import GridSearchCV
from sklearn import svm
# 导入数据
digits=load_digits()
# 分割数据集为训练集和测试集
X_train,X_test,y_train,y_test=train_test_split(digits.data,digits.target,test_size=0.25,random_state=33)
print("X_train original shape", X_train.shape)