- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 scikit-learn 中处理相当大的 ARFF 文件。这些文件位于 zip 存档中,我不想在处理之前将存档解压到文件夹中。因此,我使用Python 3.6的zipfile模块:
from zipfile import ZipFile
from scipy.io.arff import loadarff
archive = ZipFile( 'archive.zip', 'r' )
datafile = archive.open( 'datafile.arff' )
data = loadarff( datafile )
# …
datafile.close()
archive.close()
但是,这会产生以下错误:
Traceback (most recent call last):
File "./m.py", line 6, in <module>
data = loadarff( datafile )
File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 541, in loadarff
return _loadarff(ofile)
File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 550, in _loadarff
rel, attr = read_header(ofile)
File "/usr/lib64/python3.6/site-packages/scipy/io/arff/arffread.py", line 323, in read_header
while r_comment.match(i):
TypeError: cannot use a string pattern on a bytes-like object
根据loadarff documentation , loadarff
需要一个类似文件的对象。根据zipfile documentation , open
返回类似文件的 ZipExtFile
。
因此,我的问题是如何使用 ZipFile.open
返回的内容作为 loadarff
的 ARFF 输入。
注意:如果我手动解压并直接使用 data = loadarff( 'datafile.arff' )
加载 ARFF,一切都很好。
最佳答案
from io import BytesIO, TextIOWrapper
from zipfile import ZipFile
from scipy.io.arff import loadarff
zfile = ZipFile('archive.zip', 'r')
in_mem_fo = TextIOWrapper(BytesIO(zfile.read('datafile.arff')), encoding='utf-8')
data = loadarff(in_mem_fo)
将 zfile
读入内存中的 BytesIO
对象。将 TextIOWrapper
与 encoding='utf-8'
结合使用。在 loadarff
中使用此内存缓冲文本对象。
编辑:原来 zfile.open()
返回一个类似文件的对象,因此上述操作可以通过以下方式完成:
zfile = ZipFile('archive.zip', 'r')
in_mem_fo = TextIOWrapper(zfile.open('datafile.arff'), encoding='ascii')
data = loadarff(in_mem_fo)
谢谢@Bernhard
关于python - 使用 zipfile 和 scipy.io.arff 从 ZIP 读取 ARFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55235310/
为什么有人会使用 arff?请给出读取arff文件并在java中使用它的示例代码。 我在 weka 站点中找到了以下代码片段: BufferedReader reader = new Buffered
我能够使用以下命令加载 .arff 文件。但我无法从对象中提取数据并将对象转换为数据帧格式。我需要这个来在此数据帧上应用机器学习算法。 命令:- import arff dataset = pd.Da
我正在尝试从https://cometa.ujaen.es/下载arff数据集(例如 https://cometa.ujaen.es/datasets/yahoo_arts )并使用 scipy.ar
我想在 python 中加载一个 ARFF 文件,然后更改它的一些值,然后将更改保存到文件中。我正在使用 LIAC-ARFF 包 ( https://pypi.python.org/pypi/liac
我想在 scikit-learn 中处理相当大的 ARFF 文件。这些文件位于 zip 存档中,我不想在处理之前将存档解压到文件夹中。因此,我使用Python 3.6的zipfile模块: from
我正在尝试获取一组评论,并将它们转换为 ARFF 格式以便与 WEKA 一起使用。不幸的是,要么我完全误解了格式的工作原理,要么我必须为所有可能的单词提供一个属性,然后是一个存在指示符。有谁知道更好的
所以,我一直在使用本教程 https://weka.wikispaces.com/Text+categorization+with+WEKA 中的示例“TextCategorizationTest.j
如何使用 Java 在 WEKA ARFF 文件中添加类属性? 特别是,我的 ARFF 结构(根据所述 here )应该是: @attribute text string @attribute cla
我有一个从 liac-weka 包生成的 ARFF 文件。 % Finger-tapped_dataset @RELATION Feature_onsets @ATTRIBUTE f
我在 Linux 中使用 Python 2.7.12。我已经为机器安装了 liac-arff 和 arff 模块。以下行会引发错误。 arff_frame = arff.load( o
我有一些代码可以给我一个单词列表以及它们在文本中出现的频率,我正在寻找它以便代码自动将前 10 个单词转换为 ARFF @RELATION 词频 @ATTRIBUTE 字串@ATTRIBUTE 频率数
我正在使用 Java 程序生成一个 .arff 文件。该文件有大约 600 个属性。 我无法在 Weka Explorer 中打开该文件。它说:“标称值未在 header 中声明,请阅读 Token[
我正在尝试学习 Weka:我正在使用此处的 Iris 数据集 http://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/iris.arff
Weka 中的分类器(例如决策树)将如何解释“?” (表示 ARFF 文件中的缺失值)在学习阶段?Weka 会用一些预定义的值(例如“0”或“false”)替换它,还是会以某种方式影响训练过程? 最佳
我试图在 weka 中打开一个 arff 文件,但出现两个错误。 第一个,“文件未被识别为 arff 文件。原因:标称值未在标题中声明,读取 token [25],第 772 行” 奇怪的是,我删除了
我需要在我的 Java 应用程序中打印使用 Weka 对上传文件应用过滤方法后生成的 ARFF 文件。 Weka 中有什么方法或任何方法可以将 ARFF 文件打印为二维数组吗?我需要打印参数名称和值。
这是我在这个论坛上的第一个问题....我正在使用 WEKA API 在 Java 中制作数据挖掘应用程序。我首先进行预处理阶段,当我保存 ARFF 文件时,我想添加几行(作为注释)来指定我对文件所做的
我正在编写一个脚本来使用 weka 进行一些分类,当我尝试运行分类器时出现错误。我已经使用 weka.core.converters.CSVLoader 从 CSV 文件转换了文件。 然后我使用 we
有人成功地尝试从 Windows 命令行将许多 ARFF 文件转换为 CSV 文件。 我尝试使用 weka.core.converters.CSVSaver 但它仅适用于单个文件。 可以对多个文件做吗
我是java初学者,我想将现有的.csv文件转换为.arff文件,我已经编写了下面的代码,但它没有转换,而是出现了错误。请任何人帮助我解决这些错误并建议我如何 程序: import weka.core
我是一名优秀的程序员,十分优秀!