2014-06-12 10 views

Odpowiedz

4

Spójrz na wartości zwracanej przez funkcję load w pliku pomocy:

Wartość:

A character vector of the names of objects created, invisibly. 

Więc "model" jest rzeczywiście wartość oczekiwana M. Twój svm został przywrócony pod oryginalną nazwą, która jest model.

Jeśli uznasz za nieco mylące, że load nie zwraca obiektu załadowanego, ale zamiast go przywraca pod nazwą używaną do zapisania go, rozważ użycie saveRDS i readRDS.

saveRDS(model, 'modelfile.rds') 
M <- readRDS('modelfile.rds') 

i M powinien zawierać Twój model svm.

Wolę saveRDS i readRDS, ponieważ z nimi wiem, jakie obiekty tworzę w moim obszarze roboczym - zobacz blog na stronie Gavina Simpsona (powiązany w jego odpowiedzi) na szczegółową dyskusję.

+0

Działa, z wyjątkiem funkcji nazywanej nie "loadRDS", ale "readRDS". Dzięki! – user3276530

+0

@ user3276530 Ups, poprawiono teraz. Jeśli Twój problem został rozwiązany, rozważ zaakceptowanie jednej z odpowiedzi, klikając znacznik wyboru obok niej. –

+0

Otrzymuję 'nie dotyczy metody" przewidzieć "stosowane do obiektu klasy" dostroić "' błąd z poniższej linii kodu: 'svm.pred <- predict (get (" svm.model "), testData [ , -17]) ', sugeruje pls. –

3

Nie rozumiesz, co robi load. Przywraca obiekt do tej samej nazwy, którą miał przy sobie. To, co widzisz w M, jest wartością zwracaną funkcji load(). Wywołanie load() ma dodatkowy efekt uboczny ładowania obiektu z powrotem pod tą samą nazwą, w której został zapisany.

Rozważmy:

require("e1071") 
data(iris) 

## classification mode 
# default with factor response: 
model <- svm (Species~., data=iris) 
## Save it 
save(model, file = "my-svm.RData") 
## delete model 
rm(model) 
## load the model 
M <- load("my-svm.RData") 

Spójrzmy teraz na obszarze roboczym

> ls() 
[1] "iris" "M"  "model" 

Stąd model został przywrócony jako efekt uboczny load().

Od ?load widzimy powód M zawiera nazwę obiektów stworzonych (a więc zapisany pierwotnie)

Value: 

    A character vector of the names of objects created, invisibly. 

Jeśli chcesz przywrócić obiekt do nowej nazwy, należy saveRDS() i readRDS():

Aby uzyskać więcej informacji na temat saveRDS() i readRDS(), zobacz odpowiednią pomoc ?saveRDS(), a może Cię zainteresować blog post I wrote on this topic.

+0

Wielkie dzięki! To pomaga. – user3276530

Powiązane problemy