gpt4 book ai didi

python sklearn读取非常大的svmlight文件

转载 作者:行者123 更新时间:2023-12-01 02:47:20 25 4
gpt4 key购买 nike

我使用 python 2.7 和 svmlight 来存储和读取非常大的 svmlight 格式文件。

我正在使用

读取文件
import sklearn
rows, labels = sklearn.datasets.load_svmlight_file(matrixPath, zero_based=True)

文件太大,无法存储在内存中。我正在寻找一种批量迭代文件的方法,而不需要提前拆分文件。

目前我发现的最好方法是使用终端命令 split 来拆分 svmlight 文件。然后读取我创建的部分文件。

found读取大文件的一个好方法是逐行批量读取,以免内存溢出。

如何使用 svmlight 格式的文件执行此操作?

谢谢!

最佳答案

我遇到了同样的问题,这是我的解决方案:

使用 scikitlearn 中的 load_svmlight_file 函数,您可以指定 offsetlength 参数。来自 documentation :

offset:整数,可选,默认0

  • 通过向前查找来忽略偏移量的第一个字节,然后丢弃后续字节,直到下一个换行符。

长度:整数,可选,默认-1

  • 如果严格为正,则一旦文件中的位置达到(偏移量 + 长度)字节阈值,就停止读取任何新的数据行。

以下是如何批量迭代 svmlight 文件的示例:

from sklearn.datasets import load_svmlight_file

def load_svmlight_batched(filepath, n_features, batch_size):
offset = 0
with open(filepath, 'rb') as f:
X, y = load_svmlight_file(f, n_features=n_features,
offset=offset, length=batch_size)
while X.shape[0]:
yield X, y
offset += batch_size
X, y = load_svmlight_file(f, n_features=n_features,
offset=offset, length=batch_size)

def main(filepath):
iterator = load_svmlight_batched(filepath,
n_features=2**14,
batch_size=10000)
for X_batch, y_batch in iterator:
# Do something

关于python sklearn读取非常大的svmlight文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com