簡體   English   中英

用pyfpgrowth查找頻繁的模式

[英]finding frequent patterns with pyfpgrowth

我正在嘗試使用pyfpgrowth庫和pandas 查找頻繁的模式 ,首先我創建了一個具有一列的數據 ,每一行都是一個事務,這里是代碼:

import pyfpgrowth
import pandas as pd
import numpy as np
data = pd.read_csv("itemsets1.csv")
data = pd.DataFrame(data)
data.columns = ['itemsets']
data

輸出: 在此處輸入圖片說明

patterns = pyfpgrowth.find_frequent_patterns(data['itemsets'],6)
patterns

輸出:

{(' ',): 6, (' ', '1'): 8, ('1',): 9, ('1', '8'): 6, ('8',): 6}

實際上我這里有兩個問題,第一個是算法將空間作為錯誤的項目,第二個是在項目的頻率中,例如項目“ 1”僅出現一次,但是在輸出中它顯示9也錯誤,請需要幫助

注意 :我對您的數據集做了一些更改

第一個問題的答案:該算法將一個列表作為輸入。 在您的情況下,算法已將每個字符分成一個單獨的列表值,即[5,1,,2,8,,2,7]

對第二個問題的答案:您說的是1出現一次是正確的,但是如您從上述示例中看到的,由於錯誤的拆分,1出現了很多次。

現在以正確的方式進行操作:

首先,您需要將項目集中的每個字符串分成一個列表:

data['itemsets'] = data.itemsets.apply(lambda x: x.split(' '))

輸出:

在此處輸入圖片說明

接下來,“ find_frequent_patterns ”中的第二個參數是支持級別。 這意味着一個項目(或一組項目)在所有合並的交易中應出現的最小次數。 您已輸入6。在數據集中,沒有項目出現6次。 讓我們選擇2。

patterns = pyfpgrowth.find_frequent_patterns(data['itemsets'],2)

輸出:

{('10',):4,('10','8'):2,('51',):2,('8','81'):2,('81',): 4}

在上面的輸出中, ('10','8'):2表示10和8在整個數據集中一起出現兩次。

向前邁進,我們可以使用“ generate_association_rules”生成基於截止值的規則。 例如:

rules = pyfpgrowth.generate_association_rules(patterns, .5)

輸出:

{('10',):(('8',),0.5),('81',):(('8',),0.5)}

這意味着10和8在整個數據集中10的所有事務的50%中同時出現(即4)

您沒有正確准備數據。

由於在Python中,字符串是字符列表,因此您會發現頻繁的字符集。

例如,“ 51”包含字符“ 1”。

正確准備數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM