[R-sig-Geo] how to export results of predict.randomForest

Edzer Pebesma edzer.pebesma at uni-muenster.de
Fri Dec 26 12:26:29 CET 2008


I might have missed something obvious, but did you try something like

bands$randomForest = output
spplot(bands, "randomForest")

?
--
Edzer


Anne Axel schrieb:
> Hi Robert and list,
>
> Thanks so much for the Christmas message!  I tried your great 
> suggestion and I got the following error:
>
> > spgrid <- SpatialGridDataFrame(bands, output)
> Error in rbind(grid at cellcentre.offset, grid at cellcentre.offset + 
> (grid at cells.dim -  :
>   no slot of name "cellcentre.offset" for this object of class 
> "SpatialGridDataFrame"
>
> So, I examined the structure of both files (see below). In addition, 
> there are no NAs in "imgtabla" or "bands", but there are NAs in the 
> rf.prediction ("output").
>
> I tried to  writeGDAL(bands, "test2.tif") and this worked without any 
> errors.  Could it have something to do with the fact that my output is 
> of class factor?
>
> Again, thanks Robert,  for setting me on the right path.  Any other 
> suggestions out there to clear this last hurdle?
>
> Best,
> Anne Axel
>
> > str(bands)
> Formal class 'SpatialGridDataFrame' [package "sp"] with 6 slots
>   ..@ data       :'data.frame': 163982 obs. of  55 variables:
>   .. ..$ band1 : num [1:163982] 0 0 0 0 0 0 0 0 0 0 ...
>   .. ..
>   ..@ grid       :Formal class 'GridTopology' [package "sp"] with 3 slots
>   .. .. ..@ cellcentre.offset: Named num [1:2] 0.5 0.5
>   .. .. .. ..- attr(*, "names")= chr [1:2] "x" "y"
>   .. .. ..@ cellsize         : num [1:2] 1 1
>   .. .. ..@ cells.dim        : int [1:2] 442 371
>   ..@ grid.index : int(0)
>   ..@ coords     : num [1:2, 1:2]   0.5 441.5   0.5 370.5
>   .. ..- attr(*, "dimnames")=List of 2
>   .. .. ..$ : NULL
>   .. .. ..$ : chr [1:2] "x" "y"
>   ..@ bbox       : num [1:2, 1:2] 0 0 442 371
>   .. ..- attr(*, "dimnames")=List of 2
>   .. .. ..$ : chr [1:2] "x" "y"
>   .. .. ..$ : chr [1:2] "min" "max"
>   ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
>   .. .. ..@ projargs: chr " +proj=utm +zone=38 +south +a=6378137 
> +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
>
> > str(output)
>  Factor w/ 4 levels "dry","gallery",..: 3 3 3 3 3 3 3 3 3 3 ...
>
>
> > class(bands)
> [1] "SpatialGridDataFrame"
> attr(,"package")
> [1] "sp"
>
>
> > class(output)
> [1] "factor"
>
> > summary(output)
>       dry   gallery notforest     spiny      NA's
>     33009      5878    103772     21315         8
>
>
>
>
>
>
>
>
>
> At 12/24/2008 09:02 PM, you wrote:
>> Hi Anne,
>>
>> The first argument of writeGDAL is "an object of class 
>> SpatialGridDataFrame-class or SpatialPixelsDataFrame-class"
>> So you need to create a new SpatialGridDataFrame with the spatial 
>> properties of "multibands3.img" and with the RandomForest predictions 
>> ("output"). Note that there are some additional complications when 
>> there are NAs in your predictors (i.e. in "imgtabla"), but if there 
>> are none, I think that something like this might work:
>>
>> spgrid <- SpatialGridDataFrame(bands, output)
>> writeGDAL(spgrid, "rf_results.tif")
>>
>> Robert
>>
>> On Thu, Dec 25, 2008 at 4:58 AM, Anne Axel 
>> <<mailto:axelanne at msu.edu>axelanne at msu.edu> wrote:
>> Hi List,
>>
>> I am requesting help with exporting results from the 
>> predict.randomForest function.  This is my first attempt at working 
>> with spatial data in R--I was able to import the data and run the 
>> randomForest model, but I cannot figure out how to export the data 
>> for use in ArcGIS or ENVI.
>>
>> I've pasted below the code I used for randomForest and exporting of 
>> results.  If anyone has suggestions, I would be eternally grateful!  
>> Thanks, and Happy Holidays.
>>
>> Anne Axel
>>
>>
>> Department of Fisheries and Wildlife
>> Michigan State University
>> 20 Natural Resources Building
>> East Lansing, MI 48824 USA
>> 517-930-2248
>> <mailto:axelanne at msu.edu>axelanne at msu.edu
>>
>>
>> ####Read in *img file with 55 bands
>> bands=readGDAL("multibands3.img")
>> imgtabla <- as(bands, "data.frame")
>>
>> ######Read in training data and run randomForest
>> data=read.csv("bandnumsOutput_cond2.csv", header=TRUE)
>> data2=data[,1:58]
>> data.rf=randomForest(COVERTYPE~ ., data=data2, mtry=16, importance = 
>> TRUE, do.trace=100)
>> print(data.rf)
>> output=predict(data.rf, imgtabla)
>>
>> #### I've tried numerous ways of exporting the data, but I don't seem 
>> to have the data in a format that's acceptable to the functions. In 
>> addition, I've tried to coerce data into other formats, but nothing 
>> has worked.  Any suggestions?
>>
>>
>> > writeGDAL(bands, output, drivername = "GTiff", type = "Float32", 
>> mvFlag = NA, options=NULL)
>> Error in .local(.Object, ...) :
>>  STRING_ELT() can only be applied to a 'character vector', not a 
>> 'integer'
>> In addition: Warning messages:
>> 1: In if (nchar(fname) == 0) stop("empty file name") :
>>  the condition has length > 1 and only the first element will be used
>> 2: In if (nchar(filename) == 0) stop("empty file name") :
>>  the condition has length > 1 and only the first element will be used
>>
>> > writeGDAL(output, bands, drivername = "GTiff", type = "Float32", 
>> mvFlag = NA, options=NULL)
>> Error in nchar(fname) : cannot coerce type S4 to character vector
>>
>> > write.ENVI(output)
>> Error in dim(X) = c(nRow, nCol, nBand) : length-0 dimension vector is 
>> invalid
>>
>> > write.ascii.grid(output, "output", header = NULL, write.header = TRUE)
>> Error: is.matrix(data) is not TRUE
>>
>>
>>
>>
>>
>> Anne C. Axel
>> Department of Fisheries and Wildlife
>> Michigan State University
>> 20 Natural Resources Building
>> East Lansing, MI 48824 USA
>> 517-930-2248
>> <mailto:axelanne at msu.edu>axelanne at msu.edu
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> <mailto:R-sig-Geo at stat.math.ethz.ch>R-sig-Geo at stat.math.ethz.ch
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
> " Know your own bone. Gnaw at it, bury it, unearth it, and gnaw it 
> still."
>         -Henry David Thoreau
>
> "Outside of a dog, a book is a man's best friend. Inside of a dog, 
> it's too dark to read."
>         - Groucho Marx
>
> Anne C. Axel
> Department of Fisheries and Wildlife
> Michigan State University
> 20 Natural Resources Building
> East Lansing, MI 48824 USA
> 517-930-2248
> axelanne at msu.edu
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo




More information about the R-sig-Geo mailing list