R语言与支持向量机SVM应用实例

您所在的位置:网站首页 鸢尾花svm R语言与支持向量机SVM应用实例

R语言与支持向量机SVM应用实例

2023-08-13 02:39| 来源: 网络整理| 查看: 265

IRIS数据集简介

IRIS数据集中的数据源于1936年费希尔法发表的一篇论文。彼时他收集了三种鸢尾花(分别标记为setosa、versicolor和virginical)的花萼和花瓣数据。包括花萼的长度和宽度,以及花瓣的长度和宽度。我们将根据这四个特征来建立支持向量机模型从而实现对三种鸢尾花的分类判别任务。

有关数据可以从datasets软件包中的iris数据集里获取,下面我们演示性地列出了前5行数据。成功载入数据后,易见其中共包含了150个样本(被标记为setosa、versicolor和virginica的样本各50个),以及四个样本特征,分别是Sepal.Length、Sepal.Width、Petal.Length和Petal.Width。

> iris Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 在正式建模之前,我们也可以通过一个图型来初步判定一下数据的分布情况,为此在R中使用如下代码来绘制(仅选择Petal.Length和Petal.Width这两个特征时)数据的划分情况。 library(lattice) xyplot(Petal.Length ~ Petal.Width, data = iris, groups = Species, auto.key = list(corner=c(1, 0)))

上述代码的执行结果如图14-13所示,从中不难发现,标记为setosa的鸢尾花可以很容易地被划分出来。但仅使用Petal.Length和Petal.Width这两个特征时,versicolor和virginica之间尚不是线性可分的。

image

函数svm()在建立支持向量机分类模型时有两种方式。第一种是根据既定公式建立模型,此时的函数使用格式为:

svm(formula, data= NULL, subset, na.action = na.omit , scale= TRUE) 

其中:

formula表示函数模型的形式data表示在模型中包含的有变量的一组可选格式数据参数na.action用于指定当样本数据中存在无效的空数据时系统应该进行怎样的处理。默认值na.omit表示程序会忽略那些数据缺失的样本。另外一个可选的赋值为na.fail,它指示系统在遇到空数据时给出一条错误信息。参数scale为一个逻辑向量指定特征是护具是否需要标准化(默认标准化为均值0,方差1)索引向量subset用于指定那些将来将被用来训练模型的采样数据。

例如,已经知道仅用Petal.Length和Petal.Width这两个特征时标记为setosa和versicolor的鸢尾花是线性可分的,所以我们用下面的代码来构建SVM模型:

data(iris) attach(iris) subdata


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3