2017-04-10 53 views
0

這是我正在嘗試做的;用Python編寫Apriori。代碼是從幾年前,它已經爲我工作過。正在爲Py3.0更新它的一些部分,並且其中的第一步是構建一個候選集。Python代碼在映射函數中掛起

數據集的樣子:

df2 = pd.read_csv("editdf.csv", index_col= False) 
df2.head() 

dataset example

我稱這個爲:

Ap = apriori("editdf.csv",100) 
print(Ap) 

但沒有輸出;我嘗試了幾個調試選項,因此它散佈着Print語句。看來問題是在

num_list = map(int,input().split()) 

代碼的整體部分是 流氓代碼段子:

def create_candidate_item_set(dataset_file): 
    print ("Candidate Item stage") 
    candidate_item_list = defaultdict(int) 
    baskets = [] 
    counter =0 
    print ("starting with") 
    with open(dataset_file) as file: 
     for line in file: 
      print ("inside with") 
      num_list = map(int,input().split()) 
      print ("this is", str(counter)) 
      baskets.append(num_list) 
      counter +=1 
      num_list 
     for item in num_list: 
      candidate_item_list[item] = 1 if item not in candidate_item_list else candidate_item_list[item]+1 
    print ("got baskets") 
    return candidate_item_list, baskets 

我覺得我缺少的東西至關重要,但不能把一個手指就可以了。在此先感謝

+0

你給'input()'聲明瞭一些'stdin'數據嗎? – cdarke

+1

您正在逐行循環遍歷文件,但不會使用除計數器的行數外的任何內容;那是你要的嗎? –

+0

@cdarke它是一個標準的數據集,已被按摩了一下;我附上了一張相同的照片。 – Viks

回答

1

在python 3中,您需要在映射時顯式轉換爲列表。所以

num_list = list(map(int,input().split())) 

應該這樣做。

+0

做到了上述。這並沒有幫助。我仍然沒有任何輸出。 iPython內核在過去的5分鐘內仍然很忙,我覺得它已經掛起了。 – Viks