【问题标题】:An Error from SVM in RR 中 SVM 的错误
【发布时间】:2015-03-08 00:04:42
【问题描述】:

我是 R 新手,尝试从文本中检索数据,然后将其应用于 SVM 进行分类。代码如下:

train<-read.table("training.txt")
train[which(train=="?",arr.ind=TRUE)]<-NA
train=unique(train)
y=train[,length(train)]

classifier<-svm(y~.,data=train[,-length(train)],scale=F)
classifier<-svm(x=train[,-length(train)],y=factor(y),scale=F)

我尝试了 2 种不同的方式来调用 svm,第一种 (svm(y~.,data=train[,-length(train)],scale=F)) 似乎没问题,但第 2 种有问题,它报告:

Error in svm.default(x = train[, length(train)], y = factor(y), scale = F) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In svm.default(x = train[, length(train)], y = factor(y), scale = F) :
  NAs introduced by coercion

这里是training.txt的示例,最后一列是目标

39,State-gov,77516,Bachelors,13,Never-married,Adm-clerical,Not-in-family,White,Male,2174,0,40,United-States,0
50,Self-emp-not-inc,83311,Bachelors,13,Married-civ-spouse,Exec-managerial,Husband,White,Male,0,0,13,United-States,0
38,Private,215646,HS-grad,9,Divorced,Handlers-cleaners,Not-in-family,White,Male,0,0,40,United-States,0
53,Private,234721,11th,7,Married-civ-spouse,Handlers-cleaners,Husband,Black,Male,0,0,40,United-States,0
28,Private,338409,Bachelors,13,Married-civ-spouse,Prof-specialty,Wife,Black,Female,0,0,40,Cuba,0
37,Private,284582,Masters,14,Married-civ-spouse,Exec-managerial,Wife,White,Female,0,0,40,United-States,0
49,Private,160187,9th,5,Married-spouse-absent,Other-service,Not-in-family,Black,Female,0,0,16,Jamaica,0
52,Self-emp-not-inc,209642,HS-grad,9,Married-civ-spouse,Exec-managerial,Husband,White,Male,0,0,45,United-States,1
31,Private,45781,Masters,14,Never-married,Prof-specialty,Not-in-family,White,Female,14084,0,50,United-States,1
42,Private,159449,Bachelors,13,Married-civ-spouse,Exec-managerial,Husband,White,Male,5178,0,40,United-States,1
37,Private,280464,Some-college,10,Married-civ-spouse,Exec-managerial,Husband,Black,Male,0,0,80,United-States,1
30,State-gov,141297,Bachelors,13,Married-civ-spouse,Prof-specialty,Husband,Asian-Pac-Islander,Male,0,0,40,India,1
23,Private,122272,Bachelors,13,Never-married,Adm-clerical,Own-child,White,Female,0,0,30,United-States,0
32,Private,205019,Assoc-acdm,12,Never-married,Sales,Not-in-family,Black,Male,0,0,50,United-States,0
40,Private,121772,Assoc-voc,11,Married-civ-spouse,Craft-repair,Husband,Asian-Pac-Islander,Male,0,0,40,NA,1

你知道吗?提前致谢!

【问题讨论】:

    标签: r machine-learning statistics svm


    【解决方案1】:

    来自文档:

    对于x 参数:

    a data matrix, a vector, or a sparse matrix (object of class Matrix
    provided by the Matrix package,or of class matrix.csr provided by the
    SparseM package, or of class simple_triplet_matrix provided by the slam package).
    

    对于y 参数:

    a response vector with one label for each row/component of x. Can be
    either a factor (for classification tasks) or a numeric vector (for regression).
    

    当您在第二个函数中键入:x=train[,-length(train)] 时,您实际上是在使用不受支持的 data.frame,它会崩溃。

    svm 函数仅适用于数字矩阵

    library(e1071)
    train[which(train=="?",arr.ind=TRUE)]<-NA
    train=unique(train)
    y=factor(train[,length(train)])
    train <- data.frame(lapply(train,as.numeric)) #convert to numeric. factors are integer fields anyway behind the scenes.
    
    train <- as.matrix(train[-length(train)])
    
    classifier<-svm(x= train ,y=y,scale=F)
    

    输出:

    > summary(classifier)
    
    Call:
    svm.default(x = train, y = y, scale = F)
    
    
    Parameters:
       SVM-Type:  C-classification 
     SVM-Kernel:  radial 
           cost:  1 
          gamma:  0.07142857 
    
    Number of Support Vectors:  14
    
     ( 9 5 )
    
    
    Number of Classes:  2 
    
    Levels: 
     0 1
    

    【讨论】:

    • 您好,感谢您的回复。我尝试了一下,但仍然得到相同的错误 > 分类器
    • 您还需要将字段转换为数字。立即检查上述内容。
    猜你喜欢
    • 2014-05-18
    • 2014-05-05
    • 2013-10-29
    • 2016-10-30
    • 2012-03-13
    • 2018-11-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多