# [R] Questions on Random Forest

Liaw, Andy andy_liaw at merck.com
Mon Nov 24 17:34:14 CET 2003

```It's not clear to me what you want to do, but if I understand your problem
somewhat, I don't see how randomForest would be relevant.

Sounds like you are doing the following:

o  Read in a 512x512 image with pixel intensities.
o  You somehow fit a 3-component normal mixture model to the intensity data,
and have labels for which component the pixels belong to.
o  You want to be able to "fit" (or "predict") other images to the
3-component mixture model you have; i.e., create the "label" data given an
image.

If that's about right, I don't see why you would need some learning
algorithm such as randomForest.  You should be able to compute the
likelihood that a pixel belong to each of the 3 components in the mixture
model, based on the fitted parameters of that model.  The simplest I can
think of, ignoring the mixing proportions, is to simply compute the absolute
Z scores of a pixel with respect to the three components: z1 =
abs((x-u1)/sigma1), z2 = abs((x-u2)/sigma2), z2 = abs((x-u3)/sigma3), and
assign the pixel to the component with the largest absolute z-score.

HTH,
Andy

> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Fucang Jia
>
> Hi, everyone,
>
> I am a newbie on R. Now I want to do image pixel
> classification by random
> forest. But I has not a clear understanding on random forest.
> Here is some
> question:
>
> As for an image, for example its size is 512x512 and has only
> one variable
> -- gray level. The histogram of the image looks like mixture
> Gaussian Model,
> say Gauss distribution (u1,sigma1), (u2,sigma2),(u3,sigma3).
> And a image
> classified by K-means or EM algorithm, so the class label
> image is also
> 512x512 and has 0, 1, 2 value.
>
> I read the binary image data as follows:
>
> datafile <- file("bone.img","rb")
> img <- as.matrix(img)
> close(datafile)
>
> labelfile <- file(label.img","rb")
> label <-
> label <- as.matrix(label)
> close(labelfile)
>
> img_and_label <- c(img,label)  // binds the image data and class label
> img_and_label <- as.matrix(img_and_label)
> img_and_label <- array(img_and_label, dim=c(262144,2))
>
>
> Random Forest need a class label like "Species" in the  iris.
> I do not know
> how
> to set a class label like "Species" to the img.  So I run the
> command as
> follows:
>
> set.seed(166)
> rf <-
> randomForest(img_and_label[,2],data=image_and_label,importance=TRUE,
> proximity=TRUE)
>
> which outputs:
>
> Error in if (n == 0) stop("data (x) has 0 rows") :
>         argument is of length zero
>
> Could anyone tell what is wrong and how can do the RF?
>
> Secondly, if there is an new image , say img3 (dimension is
> 512x512,too),
> how can I
> use the former result to classifify the new image?
>
> Thirdly, whether or not random forest be used well if there
> is only one
> variable, say pixel
> gray level, or three variables, such as red, green, blue
> color component to
> an true color
> image?
>
> Thank you very much!
>
> Best,
>
> Fucang
>
> ========================================
> Fucang Jia, Ph.D student
> Institute of Computing Technology, Chinese Academy of Sciences
> Post.Box 2704
> Beijing, 100080
> P.R.China
> E-mail:fcjia at ict.ac.cn
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>

```