当我在Mahout中的itemBasedRecommender的训练数据中使用字符串值属性时,我得到一个NumberFormatException,它在从文件中的数据构建FileDataModel期间抛出。如果字符串属性值是“1.0”,它基本上是一个表示为字符串的数字,那么它不会抛出NumberFormatException。但是如果属性值是“Washington”,则抛出NumberFormatException。 是否有任何解决方案可以在Mahout中为推荐人的训练数据中传递像“Washington”这样的字符串属性值作为itemID / userID? 我使用的是Java 1.6SE,Mahout 0.7和Hadoop 1.2。
答案 0 :(得分:1)
Mahout推荐人并不真正使用Strings,通常你会使用长数字。在将数据传递给推荐者之前,您必须将每个用户和每个项目映射到一个唯一的数字,然后在推荐者之后,您必须将地图映射回原始数据。
有一种解决方法可以使用IDMigrator
类,但是如果我没记错的话,在分布式版本中不支持这种情况,只有内存实现。
另一个问题的回答也可能对您有所帮助(link)
答案 1 :(得分:1)
我使用Long和Float数据类型取得了成功。字符串不是Java等强类型语言中的数字。在某些数据模型中,有适合Mahout数据类型的转换函数,或者您也可以使用String.toLong()或asLong()值来传递所需的值