当我在mahout中的itembasedrecommender的训练数据中使用字符串值属性时,我得到一个numberformatexception,它是在从文件中的数据构建filedatamodel的过程中抛出的。如果string属性值是“1.0”,它基本上是一个表示为string的数字,那么它不会抛出numberformatexception。但是如果属性值为“washington”,则抛出numberformatexception。有没有什么解决方案可以让我在mahout中的推荐者的训练数据中传递像“washington”这样的字符串属性值作为itemid/userid?我正在使用Java1.6se、mahout 0.7和Hadoop1.2。
2条答案
按热度按时间3df52oht1#
mahout推荐程序并不真正适用于字符串,通常您会使用长数字来代替。在将数据传递给推荐者之前,您必须将每个用户和每个项目Map到一个唯一的编号,在推荐者之后,您必须Map回原始编号。
有一个解决方法,您可以使用
IDMigrator
类,但如果我没记错的话,分布式版本中不支持这个,只有内存中的实现。另一个问题的答案也可能对您有所帮助(链接)
wz1wpwve2#
我在长数据类型和浮点数据类型方面取得了成功。字符串不是java等强类型语言中的数字。在某些数据模型中,可以使用转换函数来适应mahout的数据类型,也可以使用string.tolong()或aslong()值来传递所需的值