Google先决条件是非法参数异常 [英] Google preconditions illegal Argument exception

查看:205
本文介绍了Google先决条件是非法参数异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用mahout为may应用程序创建一个基本推荐器。我的数据集没有任何偏好。这里是我的表如何看起来像

以下是设置mahout的方法

  MySQLJDBCDataModel jdbcModel2 = new MySQLJDBCDataModel(dataSource,user_viewed_song_statistics,
AUDIO_FK, USER_PROFILE_FK, AUDIO_FK, UVSS_DATE_CREATED);


ItemSimilarity similarity = new LogLikelihoodSimilarity(jdbcModel2);
推荐推荐者=
新增GenericBooleanPrefItemBasedRecommender(jdbcModel2,相似度);

(RecommendedItem item:recommender.recommend(1,1))
System.out.println(item);

然而在运行这个之后。它返回了这个错误

 线程main中的异常java.lang.IllegalArgumentException 
在com.google.common中。 base.Preconditions.checkArgument(Preconditions.java:72)
at org.apache.mahout.math.stats.LogLikelihood.logLikelihoodRatio(LogLikelihood.java:101)
at org.apache.mahout.cf。 taste.impl.similarity.LogLikelihoodSimilarity.doItemSimilarity(LogLikelihoodSimilarity.java:102)
at org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity.itemSimilarities(LogLikelihoodSimilarity.java:90)
at org.apache.mahout.cf.taste.impl.recommender.GenericBooleanPrefItemBasedRecommender.doEstimatePreference(GenericBooleanPrefItemBasedRecommender.java:54)
at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender $ Estimator.estimate(GenericItemBasedRecommender .java:312)
at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender $ Estimator.estimate(GenericItemBasedRecommender.java:300)
at org.apache.mahout.cf.taste.impl.recommender.TopItems.getTopItems(TopItems.java:65)
at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender。推荐(GenericItemBasedRecommender.java:131)
在org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender.recommend(AbstractRecommender.java:63)
在Starter.main(Starter.java: 53)


解决方案

您正在使用非偏好项目推荐。与此问题类似



,我发现它很奇怪它会返回那种类型的异常。

  MySQLBooleanPrefJDBCDataModel jdbc = new MySQLBooleanPrefJDBCDataModel(dataSource,TABLE_NAME,USER_ID,ITEM_ID); 
CachingRecommender cachingRecommender =新的CachingRecommender(新的SlopeOneRecommender(jdbc));

//获取用户3的5条建议
列表< RecommendedItem> items = cachingRecommender.recommend(3,5); (推荐项目:项目)
{
System.out.println(item);
}

希望这有助于您。


I am using mahout to create a basic recommender for may application. my data set does not have any preferences. here's how my table looks like

Here's how set up mahout

  MySQLJDBCDataModel jdbcModel2 = new MySQLJDBCDataModel(dataSource,"user_viewed_song_statistics",
                "AUDIO_FK","USER_PROFILE_FK","AUDIO_FK","UVSS_DATE_CREATED");


        ItemSimilarity similarity = new LogLikelihoodSimilarity(jdbcModel2);
        Recommender recommender = 
            new GenericBooleanPrefItemBasedRecommender(jdbcModel2, similarity);

       for(RecommendedItem item: recommender.recommend(1, 1))
           System.out.println(item);

However after running this. it returned this error

Exception in thread "main" java.lang.IllegalArgumentException
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)
    at org.apache.mahout.math.stats.LogLikelihood.logLikelihoodRatio(LogLikelihood.java:101)
    at org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity.doItemSimilarity(LogLikelihoodSimilarity.java:102)
    at org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity.itemSimilarities(LogLikelihoodSimilarity.java:90)
    at org.apache.mahout.cf.taste.impl.recommender.GenericBooleanPrefItemBasedRecommender.doEstimatePreference(GenericBooleanPrefItemBasedRecommender.java:54)
    at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender$Estimator.estimate(GenericItemBasedRecommender.java:312)
    at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender$Estimator.estimate(GenericItemBasedRecommender.java:300)
    at org.apache.mahout.cf.taste.impl.recommender.TopItems.getTopItems(TopItems.java:65)
    at org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender.recommend(GenericItemBasedRecommender.java:131)
    at org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender.recommend(AbstractRecommender.java:63)
    at Starter.main(Starter.java:53)

解决方案

You are using a Non-preference Item recommendation. Similar to this question

and I do find it weird that it is returning that type of an exception. what I've done is something like this.

MySQLBooleanPrefJDBCDataModel jdbc = new MySQLBooleanPrefJDBCDataModel(dataSource, TABLE_NAME, USER_ID, ITEM_ID);
CachingRecommender cachingRecommender = new CachingRecommender( new SlopeOneRecommender(jdbc));

// Get 5 recommendations for user 3
 List<RecommendedItem> items = cachingRecommender.recommend(3, 5);
  for (RecommendedItem item : items) {
        System.out.println(item);
  }

Hope this helps.

这篇关于Google先决条件是非法参数异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆