监护权纠纷适用什么程序:线性 SVM与权值提取(weight vector svm)

我正在使用虹膜数据集在 R 中练习 SVM,我想从我的模型中获取特征权重 / 系数,但我认为我可能误解了一些东西,因为我的输出给了我 32 个支持向量。我假设我会得到四个,因为我有四个变量被分析。

library(caret)
# Define fitControl
fitControl <- trainControl(## 5-fold CV
              method = "cv",
              number = 5,
              classProbs = TRUE,
              summaryFunction = twoClassSummary )
# Define Tune
grid<-expand.grid(C=c(2^-5,2^-3,2^-1))
########## 
df<-iris head(df)
df<-df[df$Species!='setosa',]
df$Species<-as.character(df$Species)
df$Species<-as.factor(df$Species)
# set random seed and run the model
set.seed(321)
svmFit1 <- train(x = df[-5],
                 y=df$Species,
                 method = "svmLinear", 
                 trControl = fitControl,
                 preProc = c("center","scale"),
                 metric="ROC",
                 tuneGrid=grid )
svmFit1

我以为这只是svmFit1$finalModel@coef,但我得到 32 个向量,当我相信我应该得到 4。

7

所以coef不是支持向量的权重W。是docsksvm类的相关部分:

coef相应的系数乘以训练标签。

为了得到你正在寻找的东西,你需要做以下事情:

coefs <- svmFit1$finalModel@coef[[1]]
mat <- svmFit1$finalModel@xmatrix[[1]]
coefs %*% mat

是一个可重复的例子。

library(caret)
#> Loading required package: lattice
#> Loading required package: ggplot2
#> Warning: package 'ggplot2' was built under R version 3.5.2
# Define fitControl
fitControl <- trainControl(
  method = "cv",
  number = 5,
  classProbs = TRUE,
  summaryFunction = twoClassSummary
)
# Define Tune
grid <- expand.grid(C = c(2^-5, 2^-3, 2^-1))
########## 
df <- iris 
df<-df[df$Species != 'setosa', ]
df$Species <- as.character(df$Species)
df$Species <- as.factor(df$Species)
# set random seed and run the model
set.seed(321)
svmFit1 <- train(x = df[-5],
                 y=df$Species,
                 method = "svmLinear", 
                 trControl = fitControl,
                 preProc = c("center","scale"),
                 metric="ROC",
                 tuneGrid=grid )
coefs <- svmFit1$finalModel@coef[[1]]
mat <- svmFit1$finalModel@xmatrix[[1]]
coefs %*% mat
#>      Sepal.Length Sepal.Width Petal.Length Petal.Width
#> [1,]   -0.1338791  -0.2726322    0.9497457    1.027411

创建于 2019-06-11 由reprex package(v0.2.1.9000)

来源

https://www.researchgate.net/post/How_can_I_find_the_w_coefficients_of_SVM http://r.789695.n4.nabble.com/SVM-coefficients-td903591.html https://stackoverflow.com/a/1901200/6637133
0

随着越来越多的人开始从 Caret 转向 Tidymodels,我想我会为 2020 年 8 月的 Tidymodels 推出上述解决方案的一个版本,因为到目前为止我还没有看到很多关于这个的讨论,这并不是那么简单。

概述这里的主骤,但请查看最后的链接,了解为什么这样做的细节。

1.获取您的最终模型

set.seed(2020)
# Assuming kernlab linear SVM
# Grid Search Parameters
tune_rs <- tune_grid(
  model_wf,
  train_folds,
  grid = param_grid,
  metrics = classification_measure,
  control = control_grid(save_pred = TRUE)
)
# Finalise workflow with the parameters for best accuracy
best_accuracy <- select_best(tune_rs, "accuracy")
svm_wf_final <- finalize_workflow(
  model_wf,
  best_accuracy
)
# Fit on your final model on all available data at the end of experiment
final_model <- fit(svm_wf_final, data)
# fit takes a model spec and executes the model fit routine (Parsnip)
  # model_spec, formula and data to fit upon

2.提取 KSVM 对象,提取所需信息,计算变量重要性

ksvm_obj <- pull_workflow_fit(final_model)$fit
# Pull_workflow_fit returns the parsnip model fit object
# $fit returns the object produced by the fitting fn (which is what we need! and is dependent on the engine)
coefs <- ksvm_obj@coef[[1]]
# first bit of info we need are the coefficients from the linear fit
mat <- ksvm_obj@xmatrix[[1]]
# xmatrix that we need to matrix multiply against
var_impt <- coefs %*% mat
# var importance

Ref:

使用插入符号提取支持向量的权重:Linear SVM and extracting the weights

变量重要性(本文最后一节):http://www.rebeccabarter.com/blog/2020-03-25_machine_learning/#finalize-the-workflow

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(714)
Linux高危端口:Linux中的以太网 + 串行端口(serial over ethernet software)
上一篇
Rebuilt:.pcm已过期 需要重建(pcm rebuild)
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 76 84
  • css预编译器: center;}

    CSS预编译器是一种用于构建CSS的工具,它可以将CSS代码转换为更易于管理和维护的格式。它们可以使CSS代码更加灵活,更易于重用,并且可以帮助开发人员更轻松地组织和管理CSS代码。…

    2023-04-30 05:19:08
    0 11 89
  • python中predict函数参数:如何使用Python的predict函数进行机器学习预测

    示例示例predict函数是scikit-learn中的一个函数,用于预测新样本的输出结果。参数:…

    2023-03-30 08:03:12
    0 20 41
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 51 99
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 62 82
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 28 27
  • canvas 官网Bring Your Ideas to Life with Creative Artwork

    Canvas 官网是一个用于创建图形的 HTML5 API,它可以在浏览器中使用 JavaScript 来绘制 2D 图形。它提供了一个可以在网页上绘制图形的强大工具,可以用来创建动画、游戏、数据可视化等。…

    2023-02-28 09:52:08
    0 73 91
  • qt creator快速入门 第3版 pdf从零开始

    Qt Creator快速入门第3版是一本关于Qt Creator的教程书,旨在帮助读者快速掌握Qt Creator的使用。书中介绍了Qt Creator的基本功能,如如何创建项目、编辑代码、调试代码以及创建应用程序等等。书中还提供了一些实例代码,帮助读者更好地理解Qt Creator的用法。…

    2023-05-16 03:03:33
    0 93 95

发表评论

登录 后才能评论

评论列表(32条)