前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支持向量机(SVM)

支持向量机(SVM)

作者头像
用户2909867
发布2018-08-22 11:12:24
4510
发布2018-08-22 11:12:24
举报
文章被收录于专栏:互联网大杂烩互联网大杂烩

支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

原理

具体原理:

  1. 在n维空间中找到一个分类超平面,将空间上的点分类。
  2. 一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。SVM就是要最大化这个间隔值。
  3. 把样例特征映射到高维空间中去。线性不可分映射到高维空间,可能会导致维度大小高到可怕的(19维乃至无穷维的例子),导致计算复杂。核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。 4.使用松弛变量处理数据噪音 具体原理就不讲了,下面代码是利用支持向量机来训练手写识别的
代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档