【发布时间】:2020-11-09 08:39:14
【问题描述】:
这里我尝试使用 Caret 对 SVM 字符串内核建模
使用数据集:
library(caret)
library(mlbench)
library(dplyr)
data("HouseVotes84")
dummy_data_classif <- HouseVotes84[,2:length(colnames(HouseVotes84))] %>%
mutate_if(is.factor, as.numeric)
dummy_data_classif <- data.frame(cbind(Class=HouseVotes84[,1], dummy_data_classif))
dummy_data_classif[is.na(dummy_data_classif)] <- 0
dummy_data_classif <- as.matrix(dummy_data_classif)
dummy_y_classif <- as.matrix(dummy_data_classif[,which(colnames(dummy_data_classif) == "Class")])
colnames(dummy_y_classif) <- "Class"
dummy_x_classif <- dummy_data_classif[,-which(colnames(dummy_data_classif) == "Class")]
data("cars") #available from caret
dummy_data_regr <- cars
dummy_data_regr <- dummy_data_regr %>%
mutate_if(is.numeric, as.character)
dummy_data_regr <- dummy_data_regr %>%
mutate_if(is.integer, as.character)
dummy_data_regr <- as.matrix(dummy_data_regr)
dummy_y_regr <- as.matrix(dummy_data_regr[,which(colnames(dummy_data_regr) == "Price")])
colnames(dummy_y_classif) <- "Price"
dummy_x_regr <- dummy_data_regr[,-which(colnames(dummy_data_regr) == "Price")]
使用重采样
resampling <- trainControl(method = "cv",
number = 5,
allowParallel = FALSE)
我尝试用 3 种方法测试这些:svmBoundrangeString, svmExpoString, svmSpectrumString
test_method <- c("svmBoundrangeString", "svmExpoString", "svmSpectrumString")
model_reg <- caret::train(x=dummy_x_regr,
y=dummy_y_regr,
data = dummy_data,
method = test_method[1],
trControl = resampling)
model_cls <- caret::train(x=dummy_x_classif,
y=dummy_y_classif,
data = dummy_data,
method = test_method[1],
trControl = resampling)
但这不起作用,缺少指标,如果我尝试对这些方法做:
Something is wrong; all the Accuracy metric values are missing
Accuracy Kappa
Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA
Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA
NA's :9 NA's :9
我该怎么做才能让它发挥作用?或者这些方法可能需要特定的数据框?
【问题讨论】: