2017-09-11 1 views
0

Ich versuche, ein Programm zu schreiben, in dem die Daten und der Platzhalter für die Variable y (output) der Funktion übergeben werden. Die Funktion erzeugt die Konfusionsmatrix für den Datensatz und die Testdaten. Dies ist in der Tat mein 5. Versuch bei dieser Art von Funktion - weshalb die meisten dieser Funktion von einem Handbuch ist, das die Irisdaten als Datensatz benutzt - aber ich scheine am y.vec-Eingang für die Funktion hängen zu bleiben. Ist meine Methode zum Einfügen der y-Variable in die Funktion korrekt?Ich versuche, eine Funktion in R zu schreiben, die die Konfusionsmatrix mithilfe eines SVM für die Klassifizierung findet.

Jede Hilfe wäre willkommen und ich danke Ihnen im Voraus.

Hier ist meine Funktion.

Funktion (Daten, y.vec)

{
Bibliothek (E1071) Bibliothek (rpart) data = Daten

index <- 1:nrow(data) 
testindex <- sample(index, trunc(length(index)/3)) 
testset <- data[testindex,] 
trainset <- data[-testindex,] 

svm.model <- svm(as.factor(data[y.vec]) ~ ., data = trainset, cost = 100, gamma = 1) 
svm.pred <- predict(svm.model, testset[,-y.vec]) 

table(pred = svm.pred, true = testset[,y.vec])  

}

Antwort

0

hoffe, das hilft!

myFunc <- function(df, y.vec) 
    { 
    library(e1071) 

    df[,y.vec] <- as.factor(df[,y.vec]) 

    set.seed(1) 
    index <- 1:nrow(df) 
    testindex <- sample(index, trunc(length(index)/3)) 
    testset <- df[testindex,] 
    trainset <- df[-testindex,] 

    svm.model <- svm(as.formula(paste(y.vec, "~ .")), data = trainset, cost = 100, gamma = 1) 
    svm.pred <- predict(svm.model, testset[,!(names(testset) %in% y.vec)]) 

    return(table(pred = svm.pred, true = testset[,y.vec])) 
    } 

myFunc(iris, "Species") 
+0

Danke Prem. Ich schätze es sehr. Ich habe es auf einigen anderen Bestandsdatensätzen versucht und sie produzieren Ergebnisse. –

+0

Froh, dass es geholfen hat! – Prem

Verwandte Themen