应用 R 的问题
Problems with apply R
我在 R 中使用 apply 函数时遇到问题。我创建了以下函数:
TrainSupportVectorMachines <- function(trainingData,kernel,G,C){
####train het model
fit<-svm(Device~.,data=trainingData,kernel=kernel,probability=TRUE,
gamma =G, costs=C)
return(fit);
}
我想用不同的 Cost(c) 值训练模型。因此,我尝试了以下推荐:
cst = matrix(2^(-4:-2),ncol=3)
kernl = "sigmoid"
fitSVMBP <- apply(cst,2,function(x)TrainSupportVectorMachines(dtr1,kernl,0.625,x))
我的观点是,fitSVMBP 成为一个列表,其中包含具有不同成本值的不同 SVM 模型。但是我得到了一个包含不同 SVM 模型的列表,但它们的成本都是 1。
有人知道我做错了什么吗?
编辑:
我用的是e1071包。
数据集如下所示:
> head(dtr1)
Device Geslacht Leeftijd Invultijd Type Maanden.geleden
1 pc M 45 16.0 A 15
2 pc V 43 27.5 A 3
3 pc V 28 16.0 A 15
4 pc V 17 10.0 A 13
5 pc M 56 16.0 A 15
6 pc M 50 27.5 A 3
您调用了参数 costs
而不是 cost
。这是一个使用 ?svm
中示例数据的示例,您可以试试这个:
model <- svm(Species ~ ., data = iris, cost=.6)
model$cost
# [1] 0.6
model <- svm(Species ~ ., data = iris, costs=.6)
model$cost
# [1] 1
R 将进行 部分 匹配(因此在这种情况下 cos=.6
会起作用)但是如果你过度指定一个参数它不匹配。
如果你给它一个它不期望的参数,它也不会总是抱怨:
> model <- svm(Species ~ ., data = iris, costs=.6, asjkdakjshd=1)
>
因为不匹配的参数被困在 ...
参数中。
如果你走得太远,你会得到:
> model <- svm(Species ~ ., data = iris, c=.122)
Error in svm.default(x, y, scale = scale, ..., na.action = na.action) :
argument 4 matches multiple formal arguments
因为 c
匹配 cost
、coef0
、class.weights
和 cachesize
。
我在 R 中使用 apply 函数时遇到问题。我创建了以下函数:
TrainSupportVectorMachines <- function(trainingData,kernel,G,C){
####train het model
fit<-svm(Device~.,data=trainingData,kernel=kernel,probability=TRUE,
gamma =G, costs=C)
return(fit);
}
我想用不同的 Cost(c) 值训练模型。因此,我尝试了以下推荐:
cst = matrix(2^(-4:-2),ncol=3)
kernl = "sigmoid"
fitSVMBP <- apply(cst,2,function(x)TrainSupportVectorMachines(dtr1,kernl,0.625,x))
我的观点是,fitSVMBP 成为一个列表,其中包含具有不同成本值的不同 SVM 模型。但是我得到了一个包含不同 SVM 模型的列表,但它们的成本都是 1。
有人知道我做错了什么吗?
编辑:
我用的是e1071包。 数据集如下所示:
> head(dtr1)
Device Geslacht Leeftijd Invultijd Type Maanden.geleden
1 pc M 45 16.0 A 15
2 pc V 43 27.5 A 3
3 pc V 28 16.0 A 15
4 pc V 17 10.0 A 13
5 pc M 56 16.0 A 15
6 pc M 50 27.5 A 3
您调用了参数 costs
而不是 cost
。这是一个使用 ?svm
中示例数据的示例,您可以试试这个:
model <- svm(Species ~ ., data = iris, cost=.6)
model$cost
# [1] 0.6
model <- svm(Species ~ ., data = iris, costs=.6)
model$cost
# [1] 1
R 将进行 部分 匹配(因此在这种情况下 cos=.6
会起作用)但是如果你过度指定一个参数它不匹配。
如果你给它一个它不期望的参数,它也不会总是抱怨:
> model <- svm(Species ~ ., data = iris, costs=.6, asjkdakjshd=1)
>
因为不匹配的参数被困在 ...
参数中。
如果你走得太远,你会得到:
> model <- svm(Species ~ ., data = iris, c=.122)
Error in svm.default(x, y, scale = scale, ..., na.action = na.action) :
argument 4 matches multiple formal arguments
因为 c
匹配 cost
、coef0
、class.weights
和 cachesize
。