Re: [R] how to label the som notes by the majority vote

From: Changbin Du <changbind_at_gmail.com>
Date: Wed, 02 Jun 2010 09:05:25 -0700

Thanks, Joris!

It works! I appreciated!

On Wed, Jun 2, 2010 at 4:23 AM, Joris Meys <jorismeys_at_gmail.com> wrote:

> Hi Changbin,
>
> I looked at your code again, and it appears as if you're using the mapping
> plot for something that it isn't meant for. The mapping shows you how many
> points you have in every circle, and these points are represented by the
> labels. Your first plot gives the majority vote.
>
> This said, you can hack the function using:
>
> classif <- predict(nir.xyf)
> tmp <- table(classif$unit.classif,classif$prediction)
> label <- colnames(tmp)
> label <- apply(tmp!=0,1,function(x){label[x]})[classif$unit.classif]
> label[-match(1:16,classif$unit.classif)] <- ""
>
>
> cl <- colors()
> bgcols <- rev(heat.colors(4))
> plot(nir.xyf,
> type="mapping",bgcol=bgcols[as.numeric(as.factor(temp.predict))],
> main="Mapping plot",labels=label)
>
> It does not calculate the majority vote itself, it just assigns a label to
> the category based on the predicted labels. Which is equivalent in this
> case.
>
> Cheers
> Joris
>
>
> On Wed, Jun 2, 2010 at 5:08 AM, Changbin Du <changbind_at_gmail.com> wrote:
>
>>
>> library("kohonen")
>> data(nir)
>> attach(nir)
>>
>> #SOM, the supervised learning, train the map using temperature as the
>> class variable.
>> set.seed(13)
>> nir.xyf<- xyf(data=spectra, Y=classvec2classmat(temperature), xweight =
>> 0.9, grid=somgrid(4, 4, "hexagonal"))
>>
>>
>> temp.xyf <- predict(nir.xyf)$unit.prediction #get prediction
>> temp.predict<- as.numeric(classmat2classvec(temp.xyf)) #change matrix to
>> vectors.
>>
>> par(mfrow=c(1,2))
>>
>> plot(nir.xyf, type="property", property=temp.predict, palette.name=rainbow, main="Prediction ")
>>
>>
>> cl <- colors()
>> bgcols <- cl[2:14]
>> plot(nir.xyf, type="mapping", labels=nir$temperature,
>> bgcol=bgcols[as.integer(temp.predict)],
>> main="Mapping plot")
>>
>> par(mfrow=c(1,1))
>>
>>
>>
>> HI, Joris,
>>
>> Thanks so much for your suggestion! I have modified the above codes, and
>> what I want is to label the notes by the temperature.
>> if a note has 3 objects mapped to it (the temperature are 30, 40, 30),
>> then I want the 30 be labeled on the note.
>>
>> the right plot is the mapping plot, I want it to be labeled by only one
>> temperature.
>>
>> Thanks so much!
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Jun 1, 2010 at 5:36 PM, Joris Meys <jorismeys_at_gmail.com> wrote:
>>
>>> Dear Changbin,
>>>
>>> Please provide a self-contained, minimal example, meaning the whole code
>>> should run and create the plot as it is now, without having to load your
>>> dataset (which we don't have). Otherwise it's impossible to see what's going
>>> on and help you.
>>>
>>> Cheers
>>> Joris
>>>
>>> On Wed, Jun 2, 2010 at 2:21 AM, Changbin Du <changbind_at_gmail.com> wrote:
>>>
>>>> HI, Dear R community,
>>>>
>>>> I am using the following codes to do the som. I tried to label the notes
>>>> by
>>>> the majority vote. either through mapping or prediction.
>>>> I attached my output, the left one dont have any labels in the note, the
>>>> right one has more than one label in each note. I need to have only one
>>>> label for each note either by majority vote or prediction.
>>>>
>>>> Can anyone give some suggestions or advice? Thanks so much!
>>>>
>>>>
>>>>
>>>> alex<-read.table("/home/cdu/operon/alex2.txt", , sep="\t", skip=0,
>>>> header=T,
>>>> fill=T)
>>>> alex1<-alex[,c(1:257)]
>>>> levels(alex1$Label)
>>>>
>>>> alex1$outcome<-as.numeric(alex1$Label)
>>>> alex1$outcome[1:20]
>>>>
>>>>
>>>> #self-organizing maps(unsupervised learning)
>>>> library("kohonen")
>>>>
>>>>
>>>> #SOM, the supervised learning, train the map using outcome as the class
>>>> variable.
>>>> set.seed(13)
>>>> final.xyf<- xyf(data=as.matrix(alex1[,c(1:256)]),
>>>> Y=classvec2classmat(alex1$outcome), xweight = 0.99, grid=somgrid(20, 30,
>>>> "hexagonal"))
>>>>
>>>>
>>>> outcome.xyf <- predict(final.xyf)$unit.prediction#get prediction
>>>> outcome.predict<- as.numeric(classmat2classvec(outcome.xyf)) #change
>>>> matrix
>>>> to vectors.
>>>>
>>>> outcome.label<-LETTERS[outcome.predict] #conver the numeric value to
>>>> letters.
>>>>
>>>>
>>>> plot(final.xyf, type="property", property=outcome.predict,
>>>> labels=outcome.label, palette.name =rainbow, main="Prediction ")
>>>>
>>>>
>>>>
>>>> cl <- colors()
>>>> bgcols <- cl[2:14]
>>>> plot(final.xyf, type="mapping", labels=outcome.label, col="black",
>>>> bgcol=bgcols[as.integer(outcome.predict)],
>>>> main="Mapping plot")
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Sincerely,
>>>> Changbin
>>>> --
>>>>
>>>> ______________________________________________
>>>> R-help_at_r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>>
>>>
>>>
>>> --
>>> Joris Meys
>>> Statistical Consultant
>>>
>>> Ghent University
>>> Faculty of Bioscience Engineering
>>> Department of Applied mathematics, biometrics and process control
>>>
>>> Coupure Links 653
>>> B-9000 Gent
>>>
>>> tel : +32 9 264 59 87
>>> Joris.Meys_at_Ugent.be
>>> -------------------------------
>>> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>>>
>>
>>
>>
>> --
>> Sincerely,
>> Changbin
>> --
>>
>>
>>
>
>
> --
> Joris Meys
> Statistical Consultant
>
> Ghent University
> Faculty of Bioscience Engineering
> Department of Applied mathematics, biometrics and process control
>
> Coupure Links 653
> B-9000 Gent
>
> tel : +32 9 264 59 87
> Joris.Meys_at_Ugent.be
> -------------------------------
> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>

-- 
Sincerely,
Changbin
--

	[[alternative HTML version deleted]]

______________________________________________
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Wed 02 Jun 2010 - 16:13:20 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 02 Jun 2010 - 16:30:26 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive