在python中使用apyori包中的load_transactions函数

2024-05-12 17:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用Python中的^{}包来进行关联规则挖掘。该包包含一个名为load_transactions package的函数,根据doctring,“加载事务并返回事务生成器”

现在我不明白如何使用这个函数。如果我使用一个文件名,我会得到文件名的每个字符,如下所示:

# demo1.tsv
beer    butter  paper
ball    beer
computer    beer    paper
ball    computer

from apyori import *
transactions = load_transactions(input_file='data/demo1.tsv')
list(transactions)
# output
  [['d'],
   ['a'],
   ['t'],
   ['a'],
   ['/'],
   ['d'],
   ['e'],
   ['m'],
   ['o'],
   ['1'],
   ['.'],
   ['t'],
   ['s'],
   ['v']]

我想知道如何加载这些文件,以便我可以使用软件包的其他功能。任何形式的帮助都将被感激。在


Tags: 函数packagetsv文件名规则load事务computer
1条回答
网友
1楼 · 发布于 2024-05-12 17:43:30

这里有点晚了,但是我发现自己更容易为apyori重新编写加载和转储函数(在我的例子中是针对JSON)。下面是一些在您的案例中应该有效的代码(添加了上下文管理以使其更安全):

import csv

def new_load_transaction(file='data/demo1.tsv'):
    with open(file, newline='') as f:
        for transaction in csv.reader(f, delimiter='\t'):
            yield transaction if transaction else ['']

上面的代码基本上直接来自csv docs,而来自{}的原始生成器完好无损。我刚刚提交了一个修复程序pull request,因此如果/当请求被接受时,我会更新您。在

顺便说一句,如果你不熟悉上下文管理器,那就值得一读,这篇link提供了一个很好的教程。在

更新

包作者的回答如下:

…在我看来,load峎u transaction()应该能够将类似文件的对象作为csv.reader()可以,即使它也可以使用一个文件路径….在外部打开文件并将file对象赋给load峎u transaction()可以解决这个问题,如下所示。在

^{pr2}$

相关问题 更多 >