關聯分析的演算法介紹以及案例實現

2021-10-05 22:45:50 字數 3044 閱讀 1458

相當於使用者的籃子,籃子裡面可能是1項集,也可能是4項集。

籃子裡所有的物品構成乙個集合。在關聯分析中,包含0個或者多個項的集合被稱為項集(itemset)。

滿足最小支援閾值的所有項集

【下面的這些不常用- -】

import pandas as pd

from mlxtend.frequent_patterns import apriori

from mlxtend.frequent_patterns import association_rules

data=pd.read_csv(

"e:\\investment.csv"

)data.head

原始資料長這個樣子,我們要把它轉成onehot形式

)#去除重複資料

retail=pd.dataframe(columns=

('id'

,'prod'))

for userid in users:

pro_s=data[data[

'userid'

]==userid]

.proid.t #將userid一樣的proid放在乙個列表裡,構成項集

#print(list(pro_s))

)retail.index=

range

(retail.shape[0]

)#指定索引是列

retail_id=retail.drop(

'prod',1

)#drop函式預設刪除行,刪除列要加axis=1

print

(retail_id[:5

])retial_prod=retail.prod.

str.join(

',')

retail_prod=retail.prod.

str.get_dummies(

',')

#構造虛擬變數

到這裡,資料處理完畢,可以開始關聯分析了

先進行計算規則

#計算規則

#設定最小支援度來選擇頻繁項集

frequent_itemsets=apriori(retail_onehot.drop(

'id',1

),min_support=

0.3,use_colnames=

true

)#設定最小支援度為0.3求頻繁項集,顯示列標籤名

#引數解釋

#min_support -- the minimum support of relations (float).最小支援度,可用來篩選項集

#min_confidence -- the minimum confidence of relations (float).最小可信度,可用來篩選項集

#min_lift -- the minimum lift of relations (float).最小提公升度

#max_length -- the maximum length of the relation (integer).序列最小長度

#'lift』大於1.2,求關聯規則

然後定義乙個規則來篩選一下

我這邊篩選的規則是滿足前提專案大於等於2個,結果專案為1個,置信度大於75%,提公升度大於1.2的結果。

#規則篩選

上面這三個結果就是按規則得到的關聯分析的結果啦

關聯分析演算法Apriori介紹

apriori 演算法其名字是因為演算法基於先驗知識 prior knowledge 根據前一次找到的頻繁項來生成本次的頻繁項。apriori 是關聯分析中核心的演算法。apriori 演算法的特點 只能處理分類變數,無法處理數值型變數 資料儲存可以是交易資料格式 事務表 或者是事實表方式 資料 演...

逆序數介紹以及演算法實現

對於逆序數通俗的理解 對於序列中每個位置的的數,其之前比他的值大的個數之和,或者在其之後比他的值小的個數之和,如此稱為逆序數。實現手段 線段樹 樹狀陣列 離散化 歸併排序 列舉 int ans 0 逆序數個數 int num maxn for int i 1 i n i include using ...

關聯分析(二)Apriori演算法理解與介紹

1.基於先驗原理的剪枝 先驗原理 如果乙個項集是頻繁的,則它的所有子集一定也是頻繁的。相反,如果乙個項集是非頻繁的,則他的所有超集也是非頻繁的。先驗原理的理解也很簡單,將支援度的公式列出來,我們可以發現,項集的支援度不會小於它的超集。基於這個原理,如果項集是非頻繁的,則我們不用去判斷,因為肯定是非頻...