資源簡介
apriori 模塊 python 3 使用方法:
apriori=find_rule(data_1, support, confidence, ms='-->')
代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
from?__future__?import?print_function
import?pandas?as?pd
#?自定義連接函數(shù),用于實現(xiàn)L_{k-1}到C_k的連接
def?connect_string(x?ms):
????x?=?list(map(lambda?i:?sorted(i.split(ms))?x))
????l?=?len(x[0])
????r?=?[]
????for?i?in?range(len(x)):
????????for?j?in?range(i?len(x)):
????????????if?x[i][:l?-?1]?==?x[j][:l?-?1]?and?x[i][l?-?1]?!=?x[j][l?-?1]:
????????????????r.append(x[i][:l?-?1]?+?sorted([x[j][l?-?1]?x[i][l?-?1]]))
????return?r
#?尋找關聯(lián)規(guī)則的函數(shù)
def?find_rule(d?support?confidence?ms=u‘--‘):
????result?=?pd.Dataframe(index=[‘support‘?‘confidence‘])??#?定義輸出結果
????support_series?=?1.0?*?d.sum()?/?len(d)??#?支持度序列
????column?=?list(support_series[support_series?>?support].index)??#?初步根據(jù)支持度篩選
????k?=?0
????while?len(column)?>?1:
????????k?=?k?+?1
????????print(u‘\n正在進行第%s次搜索...‘?%?k)
????????column?=?connect_string(column?ms)
????????print(u‘數(shù)目:%s...‘?%?len(column))
????????sf?=?lambda?i:?d[i].prod(axis=1?numeric_only=True)??#?新一批支持度的計算函數(shù)
????????#?創(chuàng)建連接數(shù)據(jù),這一步耗時、耗內(nèi)存最嚴重。當數(shù)據(jù)集較大時,可以考慮并行運算優(yōu)化。
????????d_2?=?pd.Dataframe(list(map(sf?column))?index=[ms.join(i)?for?i?in?colu
評論
共有 條評論