一个基于SVM的二分类demo
后续有时间补充原码部分
开源数据集:
https://link.zhihu.com/?target=http%3A//archive.ics.uci.edu/ml/index.php
https://link.zhihu.com/?target=https%3A//www.kaggle.com/datasets
(1)获取原始数据
(2)数据预处理
屬性信息:(即6个特征变量)
a1患者的溫度{35C-42C}
a2噁心的發生{是,否}
a3腰部疼痛{是,否}
a4排尿(持續排尿){是,否}
a5排尿疼痛{是,否}
a6灼燒尿道,瘙癢,尿道出口腫脹{是,否}
d1決定:膀胱炎{是,否}
d2決定:腎盂腎源性腎炎{是,否}
该数据集为3分类数据集合,转变为二分类:即0表示既不是膀胱炎也不是肾炎 1表示是膀胱炎或肾炎
对数据集归一化处理:通过特征标准化消除数据间的数量级差异和实现归一。(离散和连续数据属性)
https://blog.youkuaiyun.com/qq_20823641/article/details/51345057
分析该数据集可知,无验证样本仅仅30个。将原始数据集拆为训练集合测试集,各60个病例样本。
注:如果数据集较小选择简单点的模型,否则很容易过拟合。
(3)核函数选择原则
1、最一般的选择原则是针对数据量很大的时候,可以选择复杂一点的模型。虽然复杂模型容易过拟合,但由于数据量很大,可以有效弥补过拟合问题。如果数据集较小选择简单点的模型,否则很容易过拟合,此时特别要注意模型是否欠拟合,如果欠拟合可以增加多项式纠正欠拟合。
经验证:选择SVM线性核函数,基于小数据集训练(60个),测试集准确率统计结果为:83.3%,训练集的准确率为100%。
2、根据样本量m和特征量n进行选择:
- 特征相比样本较大(如m=10~1000,n=10000):选逻辑回归或者线性函数SVM
- 特征较少,样本量中(如m=10~10000,n=1~1000):选择高斯SVM
- 特征量少,样本多(如m=50000+,n=1~1000):选多项式或高斯SVM