Mahout:DataModel doesn't have preference values

本文探讨了在使用Mahout进行推荐系统开发时遇到的异常问题,特别是当选择PearsonCorrelationSimilarity相似度算法时,由于数据模型缺乏偏好值导致的异常。文章提供了解决方案,即可以选择不依赖于偏好的相似度算法,如Tanimotocoefficient算法或log-likelihood算法,并详细介绍了这些算法在推荐系统中的应用。
INFO: Processed 943 users
Feb 52011 10:54:31 AM org.slf4j.impl.JCLLoggerAdapter info
INFO: Beginning evaluation using 0.9 of GenericBooleanPrefDataModel[users:1,2,3...]
Exception in thread "main" java.lang.IllegalArgumentException: DataModel doesn't have preference values
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:90)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:74)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:66)
at mia.recommender.ch02.RecommenderIntro$6.buildRecommender(RecommenderIntro.java:163)
at org.apache.mahout.cf.taste.impl.eval.AbstractDifferenceRecommenderEvaluator.evaluate(AbstractDifferenceRecommenderEvaluator.java:124)
at mia.recommender.ch02.RecommenderIntro.eg6(RecommenderIntro.java:175)
at mia.recommender.ch02.RecommenderIntro.main(RecommenderIntro.java:38) 

 

    这个其实,耐心点往后读一点就能看到作者的解释.不过,话说回来,怎样才能将这段代码运行通过呢?究其原因是选择了PearsonCorrelationSimilarity相似度算法,而这个算法是要求偏好值的,所以抛出了" DataModel doesn't have preference values"的异常,我们只需要选适当的相似度算法(或者说不需要偏好值的算法)就可以解决这个问题.这里可选的方案有: Tanimoto coefficient算法和 log-likelihood算法,对应到具体的类:TanimotoCoefficientSimilarity 和 LogLikelihoodSimilarity

下载前必看:https://pan.quark.cn/s/744f26e0d658 标题“安良H3D 多功能限时继电器.pdf”中的知识点涉及继电器的技术细节和功能特性。 继电器是一种电控制装置,广泛应用于电子、电力、自动化及通信系统中,其主要功能是在输入电路中由小功率控制大功率电路的一种自动开关。 限时继电器则是具备时间控制功能的继电器,可以在设定时间后延迟动作或是在设定时间内动作,从而实现时间控制。 从描述和标签“安良H3D 多功能限时继电器pdf, 安良H3D 多功能限时继电器”中,可以推测这份PDF文件是对特定型号H3D继电器的技术说明文档,它强调了该继电器的多功能特性,意味着该设备不仅仅是简单的定时器,可能还集成了多种功能,例如过载保护、故障报警、远程控制等。 标签“综合资料”则表明这是一份综合性的技术资料,为使用者提供全面的继电器信息。 关于文档中部分内容的分析,虽然文档信息不是完全准确,但可以推断其描述了该继电器的相关技术参数、功能应用和操作说明。 以下是对这部分内容的详细解读:继电器名称“H3D-M”表明这是安良公司生产的H3D型号系列中的M型继电器。 文档中提到的“使用了H3D-M继电器”可能说明该文档提供了该型号继电器的具体应用案例或示例。 接着,“价值了H3D-M继电器”可能是指H3D-M继电器被使用或实现的功能。 从上下文看,这些功能包括定时控制、安全保护、远程通信等。 在安全保护方面,继电器可实现过载保护,防止系统过载引发的故障。 远程通信则意味着该继电器可能具备网络接口,能通过网络接受控制指令或发送状态信息。 文档中还提到“实现了H3D-M继电器的多种功能”,表明继电器集成了多项功能,如可以进行定时控制、保护和信号采集等多种操作。 这说明继电器不仅具有基本的...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值