svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第1张图片

支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)

SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第2张图片

下面开始用python进行算法预测

下面是分析流程图:

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第3张图片

本次项目的目的是使用SVM算法对美国威斯康星州的乳腺癌诊断进行预测

获得数据

数据集来自美国威斯康星州的乳腺癌诊断数据集

下载网址:

https://github.com/xiujiayou/svm​github.com

理解数据

字段信息:

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第4张图片
mean代表平均值,se代表标准差,worst代表最大值(三个最大值的平均值)

30个特征值中(不包括ID字段和分类标识结果字段diagnosis),实际上只有10个特征值(

radius,texture,perimeter,area,smoothness,compactness,concavity,concave points,symmetry,fractal_dimension_mean)的三个维度(均值,标准差和最大值)

569个患者中有357个良性,212个是恶性


清洗数据

先导入数据集和各种需要用到的包

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第5张图片

然后查看数据的基本信息

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第6张图片

然后我们发现特征太多没办法全部显示,所以我们用下面的方法把列名都显示出来

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第7张图片
信息太多,图中只截取一部分

然后我们将字段分成三段(mean/se/worst)

b77984f63dbe814ec15bbd7e28898797.png

数据清洗

数据集没有缺失值

id列没有用,故删除

将结果列的良性替换成0,恶性替换成1

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第8张图片

特征选择

接下来进行特征字段的筛选,首先需要观察下features_mean各个变量之间的关系。可以用corr()的函数

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第9张图片

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第10张图片

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第11张图片

图中颜色越浅表示相关性越大。所以我们能发现:radius_mean、perimeter_mean,area_mean这三个相关性大,而compactness_mean、concavity_mean,concave_points_mean这三个特征相关性大。
下面来进行特征选择 特征选择的目的是降维,用少量的特征代表数据的特性,这样也可以增强分类器的泛化能力,避免数据过拟合。 mean/se/worst这三组特征是对同一组内容的不同度量。我们可以只保留mean这组特征。 另外,在mean这组特征中,radius_mean,perimeter_mean,area_mean这三个属性相关性大, 而compactness_mean、concavity_mean,concave_points_mean这三个特征相关性大。 我们可以分别从这2类中选择一个属性作为代表,比如radius_mean和compactness_mean
那么我们就可以把原来的10个属性缩减为6个属性

f903f17f8d65f0f53f779c010e3ffeec.png

模型训练和评估

准备训练集和测试集

30%为测试集,70%为训练集

160d90aaa348535dea9738cd3efcaaf0.png

训练之前,需要对数据进行规范化,让数据在同一个量级上,避免因为维度问题造成数据误差。

数据规范化

2df27abddbdd44e30a4ae83924b6137a.png

svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测_第12张图片

模型准确率为0.91左右,效果还可以。

数据集和具体代码已上传到github上,有兴趣的小伙伴可以下载自己操作一遍。

你可能感兴趣的:(svm预测结果为同一个值)