【问题标题】:python read data build association rulespython读取数据构建关联规则
【发布时间】:2011-12-24 12:50:15
【问题描述】:

我在一个文本文件中有两列。我将它们读入 Python 到两个单独的列表中。我要做的是计算每一对的出现次数,并根据它建立关联规则。

例子:

colA = [a,b,c,d,...]

colB = [c,y,d,e,...]

到目前为止,我只是将数据读取到两个列表中,但是计算出现次数和建立规则的最佳方法是什么?

代码:

pred = []
succ = []
for line in open('arsample.txt'):
    lst = line.split('\t')
    pred.append(int(lst[0]))
    succ.append(int(lst[1]))

规则如下所示并按降序排列:

P   S   Probability
---------------------
a > c   count(a>c)/n
...     ...

【问题讨论】:

  • 不清楚您要做什么。根据您提供的样本数据,您的预期结果是什么?

标签: python associations rules


【解决方案1】:

看看 sets :

 http://docs.python.org/library/sets.html

他们允许这样做:

>>> a = [1,2,2,5,4,5,4,2,1,3]
>>> set(a)
set([1, 2, 3, 4, 5])
>>>

所以你必须在字符串列表中构建这些对,我猜...

希望对你有帮助。

【讨论】:

  • 看起来不错,但我仍然需要配对的数量,否则我无法计算概率。
  • 那么你可能会更好地使用 itertools : from itertools import groupby : 会给你集合和计数。
【解决方案2】:

您可以使用dictionary 创建映射:

mapping = {}

for key in colA:
  mapping[key] = colB.index(key)

要计算出现次数,只需使用.count()

colA.count('a')

请注意,如果colB 有两个同名元素,则映射将中断。这是因为您试图在两个非唯一集之间建立双射,这是行不通的。可以把它想象成从x^2 恢复输入号码。你只是不知道。

【讨论】:

  • colB 有同名的元素,所以这是个问题。
  • 你不能构造映射。
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 2016-07-28
  • 2020-05-30
  • 2013-04-26
  • 2011-10-26
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多