R 中的支持向量机
Kailash Awati
Instructor
df 中。# 设置随机种子,保证可复现
set.seed(1)
# 计算训练集的行数上限
sample_size <- floor(0.8 * nrow(df))
# 按 80/20 比例随机划分训练/测试集
train <- sample(seq_len(nrow(df)), size = sample_size)
# 划分训练集与测试集
trainset <- df[train, ]
testset <- df[-train, ]
e1071 库中的 svm 函数。svm() 函数library(e1071)
svm_model<- svm(y ~ .,
data = trainset,
type = "C-classification",
kernel = "linear",
scale = FALSE)
svm_model 可得到:svm_model
Call: svm(formula = y ~ ., data = trainset, type = "C-classification", kernel = "linear", scale = FALSE) Parameters: SVM-Type: C-classification SVM-Kernel: linear cost: 1 gamma: 0.5Number of Support Vectors: 55
# 训练集中的支持向量索引 svm_model$index# 支持向量 svm_model$SV# 负截距(未加权) svm_model$rho# 支持向量的权重系数 svm_model$coefs
4 8 10 11 18 37 38 39 47 59 60 74 76 77 78 80 83 ...x1 x2 5 0.519095949 0.44232464-0.1087075[,1] [1,] 1.0000000
# 训练集准确率
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
1
# 测试集准确率
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1
# 完美!
R 中的支持向量机