Kaggle学习之Machine Learning from Disaster(2) -SVM
来源:互联网 发布:淘宝助理找不到图片 编辑:程序博客网 时间:2024/05/21 00:15
一、SVM介绍
(以下来自百度百科词条SVM)
SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题。简单地说,就是升维和线性化。
升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归)。
一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论。
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
1、线性核函数K(x,y)=x·y;
2、多项式核函数K(x,y)=[(x·y)+1]^d;
3、径向基函数K(x,y)=exp(-|x-y|^2/d^2)
4、二层神经网络核函数K(x,y)=tanh(a(x·y)+b)
二、Python SVC函数包
skicit-learn集成了SVC函数包,查看官方文档输入如下:
http://scikit-learn.org/stable/modules/svm.html#svm
对于Classification:
Py官方输入参数示例如下:
>>> from sklearn import svm>>> X = [[0, 0], [1, 1]]>>> y = [0, 1]>>> clf = svm.SVC()>>> clf.fit(X, y) SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)
SVC参数说明(详见http://blog.csdn.net/szlcw1/article/details/52336824):
1、C:惩罚参数C,默认值是1.0。C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。2、kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ 。3、degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。4、gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features。5、coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。6、probability :是否采用概率估计,默认为False。7、 shrinking :是否采用shrinking heuristic方法,默认为true。8、tol :停止训练的误差值大,默认为1e-3。9、cache_size :核函数cache缓存大小,默认为200。10、class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)。11、verbose :允许冗余输出。12、max_iter :最大迭代次数,-1为无限制。13、decision_function_shape :‘ovo’, ‘ovr’ or None, default=None。14、random_state :数据洗牌时的种子值,int值。
主要调节的参数有:C、kernel、degree、gamma、coef0。
三、实际操作
应用sklearn中svc对titanic数据进行预测,代码如下:
#SVMfrom sklearn import svmpredictors=["Pclass","Sex","Age","SibSp","Parch","Fare","Embarked"]clf=svm.SVC()#clf=svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False,#tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None)clf.fit(titanic[predictors],titanic["Survived"])print(clf.score(titanic[predictors],titanic["Survived"]))
参数均采用默认,得出结果为0.83。相比LR(0.76)、RF(0.81)效果要好。
- Kaggle学习之Machine Learning from Disaster(2) -SVM
- Kaggle学习之Machine Learning from Disaster(1)
- Kaggle之Titanic: Machine Learning from Disaster
- 【机器学习】Kaggle-Titanic:Machine Learning from Disaster
- kaggle competition 之 Titanic: Machine Learning from Disaster
- 【Kaggle练习赛】之Titanic: Machine Learning from Disaster
- Kaggle比赛经验总结之Titanic: Machine Learning from Disaster
- Kaggle比赛之Titanic Machine Learning from Disaster
- Titanic: Machine Learning from Disaster(Kaggle 数据挖掘竞赛)
- Kaggle Titanic: Machine Learning from Disaster
- Kaggle | Titanic: Machine Learning from Disaster
- kaggle: Titanic: Machine Learning from Disaster
- 机器学习一小步:Kaggle上的练习Titanic: Machine Learning from Disaster(一)
- 机器学习一小步:Kaggle上的练习Titanic: Machine Learning from Disaster(二)
- Kaggle Titanic: Machine Learning from Disaster 一种思路
- kaggle竞赛——Titanic:Machine Learning from Disaster
- kaggle入门竞赛--Titanic:Machine Learning from Disaster
- kaggle Code : Titanic: Machine Learning from Disaster 分类
- [Linux操作系统]Ubuntu12.04开发环境搭建
- 词法分析中的 贪心算法
- JDK的安装及环境变量的配置
- K好数(动态规划)
- Java中的四种引用介绍和使用场景
- Kaggle学习之Machine Learning from Disaster(2) -SVM
- linux下安装texlive及中文环境配置,及texmaker安装
- 两个栈实现一个队列
- HDU 6118 度度熊的交易计划 (最小费用流变形)
- 播放assets文件里视频文件的问题
- Unity3d-NGUI的原理机制:深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- UVa 100|The 3n+1 Problem|暴力|坑点多
- Linux系统安装(手动分区挂载)
- C++ Primer练习题