2011-11-08 52 views
1

我在文本文件中有兩列。我將它們讀入Python,分成兩個單獨的列表。我想要做的是計算每一對的出現次數並基於它建立關聯規則。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 
...  ... 
+0

這並不完全清楚你想要做什麼。根據您提供的樣本數據,您的預期結果是什麼? – unholysampler

回答

0

套一看:

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]) 
>>> 

所以,你必須建立在對字符串列表,我猜...

希望它能提供幫助。

+0

看起來不錯,但我仍然需要對的數量,否則我無法計算概率。 – user366121

+0

然後你可能會更好地使用itertools:從itertools導入groupby:會給你的集合和計數。 – Louis

0

可以使用dictionary創建一個映射:

mapping = {} 

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

計數發生,只需使用.count()

colA.count('a') 

請注意,如果colB具有兩個具有相同名稱的元素,映射將會中斷。這是因爲你試圖在兩個非唯一集之間建立一個雙射,這是行不通的。把它想像爲從x^2恢復輸入號碼。你只是不知道。

+0

colB具有相同名稱的元素,所以這是一個問題。 – user366121

+0

您無法構建映射。 – Blender