I'm new to R. I have an issue, but haven't found solutions that work for me.
When calling prediction on a saved object, I get the following error: Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "character"
Note that after loading the saved objects, they show Values in my environment. But, when they are first created, they show up as Data. Perhaps this is a save/load issue, but I don't see it.
I have the following:
- Reloaded libraries. No change (Prediction using saved model object)
- Tried solution to #94 (https://github.com/facebook/prophet/issues/94), and gotten another error (maybe that's about Prophet and not R?): Error in loadNamespace(name) : there is no package called ‘devtools’
## Load required packages
required.packages = c("ggplot2", "readr", "tidyr", "tree")
lapply (required.packages, require, character.only=TRUE)
## Load data
data.all <- read.csv("BreastCancerWisconsinDataSet.csv")
## Some simple cleaning and set up
# set the target: we are trying to predict whether a diagnosis is malignant (M) or benign (B).
data.all$target [data.all$diagnosis == "M"] = 1
data.all$target [data.all$diagnosis == "B"] = 0
# all variables available for training
vars <- names(data.all)[c(-1, -2, -33)]
data.all <- data.all[c(-1, -2, -33)]
# split data into training vs testing
set.seed(1000)
data.all$rand <- runif(nrow(data.all))
data.training <- data.all[which(data.all$rand <= 0.5), ]
data.testing <- data.all[which(data.all$rand > 0.5), ]
##
# Save the data.all, data.training and data.testing objects into appropriately named .RData files
##
save(data.all, file = "Chunk_13_35_data_all.RData")
save(data.training, file = "Chunk_13_35_data_training.RData")
save(data.testing, file = "Chunk_13_35_data_testing.RData")
## Clean up (dont need data.all anymore)
rm(data.all)
## Fit a simple decision tree model
Tree.m1 <- tree (target ~ radius_mean +
texture_mean +
perimeter_mean +
area_mean +
smoothness_mean +
compactness_mean +
concavity_mean +
concave.points_mean +
symmetry_mean,
data = data.training)
##
# Save the Tree.m1 model into and appropriately named .RData file
##
save(Tree.m1, file = "Chunk_13_35_tree_m1.RData")
## Predict results - re-run this code after you reload the objects you saved. Make sure the results are the same!
Tree.m1.pred.train = predict(Tree.m1, data.training, type = "vector")
Tree.m1.pred.train = ifelse(Tree.m1.pred.train > 0.5, 1, 0)
error = mean(Tree.m1.pred.train != data.training$target)
print(paste('Tree Training Model Accuracy', 1-error))
Tree.m1.pred.test = predict(Tree.m1, data.testing, type = "vector")
Tree.m1.pred.test = ifelse(Tree.m1.pred.test > 0.5, 1, 0)
error = mean(Tree.m1.pred.test != data.testing$target)
print(paste('Tree Testing Model Accuracy', 1-error))
## Clean up
rm(list = ls()) # This will remove all objects in the environment
######
# Check that can run on saved objects
######
required.packages = c("ggplot2", "readr", "tidyr", "tree")
lapply (required.packages, require, character.only=TRUE)
# Note that tried to add devtools line here.
data.training <- load("Chunk_13_35_data_training.RData")
data.testing <- load("Chunk_13_35_data_testing.RData")
Tree.m1 <- load("Chunk_13_35_tree_m1.RData")
Tree.m1.pred.train = predict(Tree.m1, data.training, type = "vector") # Error occurs here
Tree.m1.pred.train = ifelse(Tree.m1.pred.train > 0.5, 1, 0)
error = mean(Tree.m1.pred.train != data.training$target)
print(paste('Tree Training Model Accuracy', 1-error))
Tree.m1.pred.test = predict(Tree.m1, data.testing, type = "vector")
Tree.m1.pred.test = ifelse(Tree.m1.pred.test > 0.5, 1, 0)
error = mean(Tree.m1.pred.test != data.testing$target)
print(paste('Tree Testing Model Accuracy', 1-error))