支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
具体原理:
from sklearn.datasets import load_digits
#从sklearn.datasets导入手写数字加载器
#把加载的数据存储到digits变量中
digits=load_digits()
#检查数据的规模和特征维度
print(digits.data.shape)
#导入train_text_split用于数据分割
from sklearn.cross_validation import train_test_split
#分割数据25%用于测试,75%用于训练
X_train,X_test,Y_train,Y_test=train_test_split(digits.data,digits.target,test_size=0.25,random_state=33)
#查看数据分布
print(Y_train.shape)
print(Y_test.shape)
#导入数据标准化模块
from sklearn.preprocessing import StandardScaler
#导入支持向量机分类器LinearSVC
from sklearn.svm import LinearSVC
#对数据进行标准化
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
#初始化支持向量机LinearSVC
lsvc=LinearSVC()
#进行模型训练
lsvc.fit(X_train,Y_train)
#使用训练好的模型进行预测
y_predict=lsvc.predict(X_test)
#使用模型自带的评估函数进行准确性评测
print('The Accuracy of Linear SVC is',lsvc.score(X_test,Y_test))
#使用sklearn.metrics里面的classification_report模块对预测结果做性能分析
from sklearn.metrics import classification_report
print(classification_report(Y_test,y_predict,target_names=digits.target_names.astype(str)))
结果如下所示:
结果.png