微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何选择特征并使用支持向量机算法进行训练?

如何解决如何选择特征并使用支持向量机算法进行训练?

我有心脏数据集,其中包括年龄、性别、cp、trestbps、chol、fbs、restecg、thalach、exang、oldpeak、slope、ca、thal、Target Variable 等特征。每个数据都有数值。

我想用支持向量机算法训练数据。

#read data
setwd("C:/Users/sevvalayse.yurtekin/Desktop/SevvalAyse_Yurtekin")
data_heart = read.csv("heart_disease_dataset.csv",header = T,sep = ",")
data_heart

#split randomly test and train data. 75% train,25% test.
ind<- sample(2,nrow(data_heart),replace = T,prob = c(0.75,0.25))
train<-data_heart[ind==1,]
test<-data_heart[ind==2,]

classifier = svm(formula = age ~.,data = train,type = 'C-classification',kernel = 'linear')
classifier

这是我的代码。我拆分数据。但是我怎么训练呢?我如何确定功能?或者我可以使用并使用所有功能吗?你能帮我吗?

解决方法

在您提供的代码中,您使用所有其他变量来预测年龄,这就是 formula = age ~. 的意思。

有两种方法可以指定特征和目标变量,或者使用公式参数,例如:

classifier <- svm(formula = target ~ age + sex + cp + trestbps + chol + fbs,data = train,type = 'C-classification',kernel = 'linear')

或者您单独提供特征和目标作为 xysvm 参数(分别)(参见 documentation),例如:

classifier <- svm(x = train[,c('age','sex','cp','trestbps','chol','fbs')],y = train[,'target'],kernel = 'linear')

如果您想使用所有功能,您可以像以前一样使用快捷方式 target ~ .,但在您的版本中,目标变量是 age

模型在调用 svm 函数时进行训练。之后,您可能想要预测测试集上的目标变量:

predicted <- predict(classifier,test)

请注意,这里我提供了完整的数据框 test,因为它更方便,但当然不需要 target 列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。