You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by jams gost <ja...@gmail.com> on 2012/01/17 14:57:52 UTC

Help for optimizing Mahout Recommender Code

HI Mahout Group,


  I am student and new to mahout. I have reviewed Mahout code For
recommender system and implemented in my system.I have implemented belowed
JAVA FILE.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import java.io.IOException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender;
import org.apache.commons.cli2.OptionException;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import
org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;


public class allrecommender {

    public static void main(String... args) throws FileNotFoundException,
TasteException, IOException, OptionException {


        File ratingsFile = new File("data.csv");
        DataModel model = new FileDataModel(ratingsFile);

        CachingRecommender cachingRecommender = new CachingRecommender(new
SlopeOneRecommender(model));


        for (LongPrimitiveIterator it = model.getUserIDs(); it.hasNext();){
            long userId = it.nextLong();

         List<RecommendedItem> recommendations =
cachingRecommender.recommend(userId, 10);


            if (recommendations.size() == 0){
                System.out.print("User ");
                System.out.print(userId);
                System.out.println(": no recommendations");
            }


            for (RecommendedItem recommendedItem : recommendations) {
                System.out.print("User ");
                System.out.print(userId);
                System.out.print(": ");
                System.out.println(recommendedItem);
            }
        }
    }
}


At console side I am getting recommendation like

User 1188 : RecommendedItem[item:58804, value:1.0]
User 1188 : RecommendedItem[item:6616, value:1.0]
User 1188 : RecommendedItem[item:60158, value:1.0]
User 1188 : RecommendedItem[item:9262, value:1.0]
User 1188 : RecommendedItem[item:39936, value:1.0]
User 1188 : RecommendedItem[item:29095, value:1.0]
User 1188 : RecommendedItem[item:3317, value:1.0]
User 1188 : RecommendedItem[item:35707, value:1.0]
User 1188 : RecommendedItem[item:54217, value:1.0]
User 1188 : RecommendedItem[item:25450, value:1.0]


Instead this, I want recommendation in this manner:

for User 1188 : 58804,6616,60158,9262,39936,29095,3317,35707,54217,25450

or only ids of item.so how can i get only item ids on my console..


Thanks,
Jams

Re: Help for optimizing Mahout Recommender Code

Posted by Sean Owen <sr...@gmail.com>.
It probably means you are using boolean data, but not using one of the
boolean pref recommenders.

On Tue, Jan 17, 2012 at 5:28 PM, jams gost <ja...@gmail.com> wrote:

> Hello Sean Owen,
>
>
>    At generation of recommendation every time, i got value 1.0. Is that
> mean 100% as 1.0.?
>
> THanks,
>
> On Tue, Jan 17, 2012 at 9:01 PM, jams gost <ja...@gmail.com> wrote:
>
> > Ya Sean Owen,
> >
> >     Thank you SO mUCh!! You solved it!!
> >
> >
> > On Tue, Jan 17, 2012 at 8:52 PM, Sean Owen <sr...@gmail.com> wrote:
> >
> >> Print recommendedItem.getItemID() then -- you should read the javadoc.
> >>
> >>
> https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/recommender/RecommendedItem.html
> >>
> >> On Tue, Jan 17, 2012 at 3:20 PM, jams gost <ja...@gmail.com> wrote:
> >> > Hello Sean Owen,
> >> >
> >> >    I have created my own loop.even it gives me same like this.
> >> >
> >> > suppose i am considering one item 35707,it gives me
> >> >
> >> >  RecommendedItem[item:35707, value:1.0]
> >> >
> >> >
> >> >  But i need only
> >> >
> >> > 35707
> >> >
> >> >
> >> > without its value.
> >> >
> >> > So what can i do for this?
> >> >
> >> >
> >> > Thanks,
> >> > Jams
> >>
> >
> >
>

Re: Help for optimizing Mahout Recommender Code

Posted by jams gost <ja...@gmail.com>.
Hello Sean Owen,


    At generation of recommendation every time, i got value 1.0. Is that
mean 100% as 1.0.?

THanks,

On Tue, Jan 17, 2012 at 9:01 PM, jams gost <ja...@gmail.com> wrote:

> Ya Sean Owen,
>
>     Thank you SO mUCh!! You solved it!!
>
>
> On Tue, Jan 17, 2012 at 8:52 PM, Sean Owen <sr...@gmail.com> wrote:
>
>> Print recommendedItem.getItemID() then -- you should read the javadoc.
>>
>> https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/recommender/RecommendedItem.html
>>
>> On Tue, Jan 17, 2012 at 3:20 PM, jams gost <ja...@gmail.com> wrote:
>> > Hello Sean Owen,
>> >
>> >    I have created my own loop.even it gives me same like this.
>> >
>> > suppose i am considering one item 35707,it gives me
>> >
>> >  RecommendedItem[item:35707, value:1.0]
>> >
>> >
>> >  But i need only
>> >
>> > 35707
>> >
>> >
>> > without its value.
>> >
>> > So what can i do for this?
>> >
>> >
>> > Thanks,
>> > Jams
>>
>
>

Re: Help for optimizing Mahout Recommender Code

Posted by jams gost <ja...@gmail.com>.
Ya Sean Owen,

    Thank you SO mUCh!! You solved it!!


On Tue, Jan 17, 2012 at 8:52 PM, Sean Owen <sr...@gmail.com> wrote:

> Print recommendedItem.getItemID() then -- you should read the javadoc.
>
> https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/recommender/RecommendedItem.html
>
> On Tue, Jan 17, 2012 at 3:20 PM, jams gost <ja...@gmail.com> wrote:
> > Hello Sean Owen,
> >
> >    I have created my own loop.even it gives me same like this.
> >
> > suppose i am considering one item 35707,it gives me
> >
> >  RecommendedItem[item:35707, value:1.0]
> >
> >
> >  But i need only
> >
> > 35707
> >
> >
> > without its value.
> >
> > So what can i do for this?
> >
> >
> > Thanks,
> > Jams
>

Re: Help for optimizing Mahout Recommender Code

Posted by Sean Owen <sr...@gmail.com>.
Print recommendedItem.getItemID() then -- you should read the javadoc.
https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/recommender/RecommendedItem.html

On Tue, Jan 17, 2012 at 3:20 PM, jams gost <ja...@gmail.com> wrote:
> Hello Sean Owen,
>
>    I have created my own loop.even it gives me same like this.
>
> suppose i am considering one item 35707,it gives me
>
>  RecommendedItem[item:35707, value:1.0]
>
>
>  But i need only
>
> 35707
>
>
> without its value.
>
> So what can i do for this?
>
>
> Thanks,
> Jams

Re: Help for optimizing Mahout Recommender Code

Posted by jams gost <ja...@gmail.com>.
Hello Sean Owen,

    I have created my own loop.even it gives me same like this.

suppose i am considering one item 35707,it gives me

 RecommendedItem[item:35707, value:1.0]


 But i need only

35707


without its value.

So what can i do for this?


Thanks,
Jams

Re: Help for optimizing Mahout Recommender Code

Posted by Sean Owen <sr...@gmail.com>.
I don't think this has anything to do with Mahout per se. You just
need to write your loop to print the output as you say you want it.

On Tue, Jan 17, 2012 at 1:57 PM, jams gost <ja...@gmail.com> wrote:
> HI Mahout Group,
>
>
>  I am student and new to mahout. I have reviewed Mahout code For
> recommender system and implemented in my system.I have implemented belowed
> JAVA FILE.
>
> import java.io.File;
> import java.io.FileNotFoundException;
> import java.util.List;
> import java.io.IOException;
> import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
> import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender;
> import org.apache.commons.cli2.OptionException;
> import org.apache.mahout.cf.taste.common.TasteException;
> import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
> import
> org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;
> import org.apache.mahout.cf.taste.model.DataModel;
> import org.apache.mahout.cf.taste.recommender.RecommendedItem;
>
>
> public class allrecommender {
>
>    public static void main(String... args) throws FileNotFoundException,
> TasteException, IOException, OptionException {
>
>
>        File ratingsFile = new File("data.csv");
>        DataModel model = new FileDataModel(ratingsFile);
>
>        CachingRecommender cachingRecommender = new CachingRecommender(new
> SlopeOneRecommender(model));
>
>
>        for (LongPrimitiveIterator it = model.getUserIDs(); it.hasNext();){
>            long userId = it.nextLong();
>
>         List<RecommendedItem> recommendations =
> cachingRecommender.recommend(userId, 10);
>
>
>            if (recommendations.size() == 0){
>                System.out.print("User ");
>                System.out.print(userId);
>                System.out.println(": no recommendations");
>            }
>
>
>            for (RecommendedItem recommendedItem : recommendations) {
>                System.out.print("User ");
>                System.out.print(userId);
>                System.out.print(": ");
>                System.out.println(recommendedItem);
>            }
>        }
>    }
> }
>
>
> At console side I am getting recommendation like
>
> User 1188 : RecommendedItem[item:58804, value:1.0]
> User 1188 : RecommendedItem[item:6616, value:1.0]
> User 1188 : RecommendedItem[item:60158, value:1.0]
> User 1188 : RecommendedItem[item:9262, value:1.0]
> User 1188 : RecommendedItem[item:39936, value:1.0]
> User 1188 : RecommendedItem[item:29095, value:1.0]
> User 1188 : RecommendedItem[item:3317, value:1.0]
> User 1188 : RecommendedItem[item:35707, value:1.0]
> User 1188 : RecommendedItem[item:54217, value:1.0]
> User 1188 : RecommendedItem[item:25450, value:1.0]
>
>
> Instead this, I want recommendation in this manner:
>
> for User 1188 : 58804,6616,60158,9262,39936,29095,3317,35707,54217,25450
>
> or only ids of item.so how can i get only item ids on my console..
>
>
> Thanks,
> Jams