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