首页 文章

如何使用Weka Java API执行线性回归时处理字符串值

提问于
浏览
0

我正在使用Weka Java API执行线性回归 . 数据集包括UserId,用户访问的URL,页面上的时间花费 . 由于URL是String属性,因此在使用上述数据集执行线性回归时遇到问题 . 是他们任何准备使用的方法,它将字符串转换为Weka中的等效Int值 . 我在Mahout中看到了类似的功能,但在Weka中找不到它 . 我可以通过计算每个字符的ASCII总和来轻松创建一个函数来输出字符串的Int值,但我想要一个更可靠且已经过测试的解决方案 .

2 回答

  • 0

    你是正确的,线性回归只对数值有效 . 但是,从分类值到数字的任何旧转换都没有问题 . 例如,散列字符串会给出一个数字,但会给出完全无意义的结果作为线性回归的特征 .

    预期数值具有有序和有意义的量级 . “foo.com”是135092,“bar.com”是985882是什么意思?线性回归会试图将“bar.com”解释为“比foo.com大5倍的东西”,这是无稽之谈 .

    您可能正在考虑使用1-of-n编码,您可以为每个可能的值(URL)创建新的0/1功能 . 对于URL,这是不可行的 . 域名 - 也许吧 .

  • 1

    虽然Weka LinearRegression分类不适用于String数据类型,但您可以尝试将所有网站转换为名义,这可以通过算法计算 . 我不太清楚算法究竟是如何执行的,但根据我的经验,它在某些情况下改善了结果(因为名义可以算作重复值,值之间的距离如果不相等则等于1) .

相关问题