【问题标题】:SVM Classification using R - Variable Length Differ Error使用 R 的 SVM 分类 - 可变长度差异误差
【发布时间】:2015-02-08 12:00:45
【问题描述】:

我目前正在借助 R 中可用的包解决 SVM 分类问题。

本网站中给出的示例代码可以正常工作。 http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Classification/SVM

但是当使用不同的数据集尝试相同的程序时,我得到可变长度不同的错误。这是我的代码。

library(MASS)
library(e1071)
data <- ChickWeight
data <- data[-3]  # removing unwanted column  
tune.svm(data$Diet~., data = data , gamma = 10^(-6:-1) , cost=10^(-1:1))

错误。

 Error in model.frame.default(formula, data) : 
 variable lengths differ (found for 'weight')

我尝试在谷歌上搜索该错误,但我可以找到正确的修复方法或为什么会产生此错误。

请告知发生了什么问题。

【问题讨论】:

  • 你需要正确设置你的公式,通过引用没有数据框的列,像这样:tune.svm(Diet~., data = data)
  • 但是为什么它不考虑带有数据框的列。

标签: r data-mining svm


【解决方案1】:

您可能删除了:

'Diet'(target)

在传递给 svm 之前的列。

【讨论】:

    【解决方案2】:

    您的公式应仅包含列,不包含数据框(以及 $ 运算符)。试试这个:

    library(MASS)
    library(e1071)
    tune.svm(Diet~., data = ChickWeight[-3] , gamma = 10^(-6:-1) , cost=10^(-1:1))
    

    结果:

    ‘svm’的参数调优:

    - sampling method: 10-fold cross validation 
    
    - best parameters:
     gamma cost
       0.1   10
    
    - best performance: 0.5641561 
    

    【讨论】:

    • 谢谢你工作正常。但是请告诉我为什么它不考虑带有数据框的列。
    • 因为这就是公式在 R 中的工作方式。它节省了键入时间,并且在数据框的上下文中评估了公式。您可以在?formula 中阅读(略显简洁的)帮助
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2017-09-06
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多