R语言:SVM的实现——e1071

SVM是比较常用的分类算法,其核心采用的是线性分类器,如果数据在当前维度下不可分割,可以映射到更高的维度之上。本文将着重介绍SVM算法的R语言实现。

使用的是e1071包中的svm函数。


数据简介

本文数据选择了红酒质量分类数据集,这是一个很经典的数据集,原数据集中“质量”这一变量取值有{3,4,5,6,7,8}。为了实现二分类问题,我们添加一个变量“等级”,并将“质量”为{3,4,5}的观测划分在等级0中,“质量”为{6,7,8}的观测划分在等级1中。

数据下载戳我

因变量:等级

自变量:非挥发性酸性、挥发性酸性、柠檬酸、剩余糖分、氯化物、游离二氧化硫、二氧化硫总量、浓度、pH、硫酸盐、酒精

library(openxlsx)
wine = read.xlsx("C:/Users/Mr.Reliable/Desktop/classification/winequality-red.xlsx") 
#将数据集分为训练集和测试集,比例为7:3
train_sub = sample(nrow(wine),7/10*nrow(wine))
train_data = wine[train_sub,]
test_data = wine[-train_sub,]

SVM的实现

R包下载
install.packages('e1071')
实现SVM

svm函数的重要参数:

参数 意义
在R语言中,使用e1071可以构建SVM模型。该中的svm()函数可以选择四种不同的内核,分别是linear、polynomial、radial basis和sigmoid。为了选择最好的内核和参数,可以使用tune.svm()函数进行参数调优。下面是一个示例代码: ```R library(e1071) # 假设已经准备好了数据集pima.scale # 设置一个随机数种子,之后可以复现结果 set.seed(123) # 把数据随机打乱,然后按照7:3的比例划分为训练集和测试集 ind <- sample(2, nrow(pima.scale), replace = TRUE, prob = c(0.7, 0.3)) train <- pima.scale\[ind == 1, \] test <- pima.scale\[ind == 2, \] # 使用tune.svm()函数进行参数调优 tuned <- tune.svm(type ~ ., data = train, kernel = c("linear", "polynomial", "radial", "sigmoid")) # 获取最佳的内核和参数 best <- tuned$best.model # 使用最佳的模型进行预测 predictions <- predict(best, newdata = test) # 输出预测结果 predictions ``` 这段代码使用了pima.scale数据集,将数据集随机打乱后按照7:3的比例划分为训练集和测试集。然后使用tune.svm()函数进行参数调优,选择最佳的内核和参数。最后使用最佳的模型对测试集进行预测,并输出预测结果。 #### 引用[.reference_title] - *1* *2* *3* [机器学习——基于R的svm练习](https://blog.youkuaiyun.com/narutodzx/article/details/123667972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值