我试图从https://cometa.ujaen.es/下载arff数据集(例如https://cometa.ujaen.es/datasets/yahoo_arts),并使用scipy.arff.loadarff
加载到python中。
然而,似乎scipy期望在头之后有一种csv文件,并且无法解析绝大多数数据集。
例如,重现问题:
from scipy.arff import loadarff
import urllib
urllib.request.urlretrieve('https://cometa.ujaen.es/public/full/yahoo_arts.arff', 'yahoo_arts.arff')
ds = loadarff('yahoo_arts.arff')
(在这种情况下,我得到ValueError: could not convert string to float: '{8 1'
)。
这是预期的吗?(也就是scipy实现不完全符合arff格式)你知道一些变通方法或一些手工的解析函数吗?
谢谢你对这个主题的任何帮助/建议。
4条答案
按热度按时间whlutmcx1#
这是预期的吗?(aka scipy实施不完全符合arff格式)
是的,很不幸。正如docstring for
loadarff
中提到的,“它无法读取具有稀疏数据的文件(文件中的{})。“文件yahoo_arts.arff
在其@data
部分使用稀疏格式。您可以尝试searching PyPi for "arff"来寻找替代品。我没有使用过这些,所以我没有任何具体的建议。
c90pui9n2#
您可以使用以下解决方法:
输出:
unftdfkk3#
正如Warren Weckesser的回答中所指出的,scipy无法读取稀疏的arff文件。我已经实现了一个快速的解决方案来解析稀疏的arff文件,如果它可以帮助其他人,我在下面分享它。如果我有时间做一个干净的版本,我会尝试为scipy版本做出贡献。
编辑:对不起rusu_ro1,我没有看到你的版本,但我想它的工作以及。
xe55xuns4#
根据@Kederrac和@ThR37的精彩回复,我建议改进如下: