我想使用 R 读取来自 UCI 和 Amazon 评论的数据集。
数据集采用 ARFF (.arff) 格式。
我正在使用以下脚本:
require("foreign")
setwd("H:/DataSet/amazon")
reviews <- read.arff("amazon.arff")
我收到以下错误
read.arff("amazon.arff") 中的错误:属性规范无效。
感谢您在高级方面的帮助。
我假设您指的是 UCI 机器学习存储库中的“Amazon Commerce 评论集数据集”。连 Weka 都打不开这个数据集,说
“...不被识别为 'Arff 数据文件'文件。...属性名称不是唯一的。”
如果你查看文件,你会看到很多类似的条目
@attribute '\'\'\'\'\'\'\'\'\'\'r\'\'\'\'\'\'\'\'\'\'\'' numeric
所以文件出了点问题,这不是 R 或任何“Arff”读取例程的错。您应该询问描述页面上提供其姓名和电子邮件地址的数据集创建者。
我找到了让 Weka 打开 .arff 文件的解决方案。
无法将结构确定为 arff(原因:java.lang.illegalArgumentException:属性名称不是唯一的!原因:'T''T''T''T''I''I''I''I''Th' 'Th' 'Th' '类')。
不是这样的属性@attribute "'\'\'\'\'\'\'\'\'\'\'r\'\'\'\'\'\'\'\'\'\' \'' 数字”。
如果您在文本编辑器(我使用 TextMate)中打开 arff 文件,您会找到罪魁祸首。(在文本伴侣中,他们显示 < NUL > )
您可以使用控制 F 来搜索“I”、“T”和“Th”的属性,但为了加快搜索速度,这里有 3 个易于搜索的属性,它们靠近问题站点。
对于“我”搜索“t_wo”,
对于“Th”搜索“ff_”
对于 'T' 搜索 'x_' (属性将在上面)
您不能简单地删除它们,因为无法知道哪些数字适用,所以我建议将它们重命名为 T2-4、I2-4 Th2-4。您还需要将属性“class”重命名为“class1”
在您的特定情况下,数据集有一些问题,我无法阅读它。
不确定它是否有帮助,但如果您想使用 R 读取 .arff 文件,另一种方法是使用RWeka 包。
该包有一些依赖项:rJava(注 1)和 RWekajars。
然后,通过使用以下脚本,您将能够读取数据集(注 2):
library(rJava)
library("RWeka")
x <- read.arff(file= "amazon.arff")
我没有专门尝试使用您的数据集(由于它的问题),但是当使用iris.arff dataset时,它运行良好的脚本(当然,需要更改文件的名称)。
笔记