親和性分析,分析物品之間的相關性

2021-07-31 13:05:16 字數 2645 閱讀 6616

#親和性分析,分析物品之間的相關性,使用了支援度support和置信度confidence

#簡化了**的實現,使用到的規則只有單一性,即只存在購買某件商品(只有一樣商品)推測購買另一件商品(也只有一件商品)的可能性

#說明:記錄的結構是類似於[0,0,0,1,1],其中0表示沒購買,1表示購買,不表示購買的數量。

#通過與下面的features對應,形成真實世界中的購物記錄,比如[0,0,0,1,1]表示購買了蘋果和香蕉

import numpy as np

from collections import defaultdict

from operator import itemgetter

valid_rules = defaultdict(int)

invalid_rules = defaultdict(int)

num_occurances = defaultdict(int)

support = defaultdict(int)

confidence = defaultdict(int)

#將資料集以按規則進行存放,即有效規則,無效規則和購買的商品出現的次數

defdealdatas

(): dataset_filename = "affinity_dataset.txt"

x = np.loadtxt(dataset_filename) #載入資料集

for sample in x: #遍歷資料集中的每一條記錄資料[0,0,0,1,1]

for premise in range(len(features)): #遍歷每一條記錄資料裡的單個商品購買情況

if sample[premise] == 0:

continue

num_occurances[premise] += 1

#儲存購買過的商品

for conclusion in range(len(features)):

if premise == conclusion:

continue

if sample[conclusion] == 1:

valid_rules[(premise, conclusion)] += 1

#儲存同時購買premise, conclusion表示的商品的資訊(規則)

else:

invalid_rules[(premise, conclusion)] += 1

for premise, conclusion in valid_rules.keys():

#支援度:通過輸入條件premise,得到結論conclusion的規則個數。即premise->conclusion的規則條數

support[(premise, conclusion)] = valid_rules[(premise, conclusion)]

#置信度:條件概率

if num_occurances[premise] != 0:

confidence[(premise, conclusion)] = valid_rules[(premise, conclusion)] / float(num_occurances[premise])

#使用定義的features格式化輸出對應於現實世界中的資訊

defprint_rules

(premise, conclusion):

premise_name = features[premise]

conclusion_name = features[conclusion]

print("rule: if a person buy they will buy ".format(premise_name, conclusion_name))

print("-support :".format(support[(premise, conclusion)]))

print("-confidence :".format(confidence[(premise, conclusion)]))

if __name__ == "__main__":

dealdatas()

#檢視想要知道的規則的支援度和置信度

print_rules(1, 3) #規則(1,3)表示購買牛奶後也會購買香蕉的規則

print_rules(3, 1)

print_rules(3, 4)

#按照置信度獲取top5(前5條置信度最大的規則)

sorted_support = sorted(confidence.items(), key=itemgetter(1), reverse=true)

for index in range(5):

print("rule #".format(index+1))

premise,conclusion = sorted_support[index][0]

print_rules(premise,conclusion)

執行結果截圖如下:

親和性分析

小編最近在看 robert layton 的資料探勘,寫隨筆一方面為了加深印象,一方面為了以後方便看。通常 為了增大需求,常常把顧客願意一起買的東西放在一起。這樣顧客買的機率較大,能夠刺激消費。最簡單的例子就是,你買了羊肉卷,那你肯定也想買墨魚丸,買了墨魚丸,想到了火鍋底料,如果你沒有想到的化,那麼...

spearman相關性分析 相關性分析

r語言常用函式 cor 預設結果為矩陣 cor mydat,use method use 缺失值的處理,method 處理方法 cor x,y 可以計算非方形矩陣,x y分別為2個矩陣,相同的行數 cor.test x,y,alternative method x y為檢驗相關性的變數 librar...

相關性分析

1.圖表 折線圖 散點圖2.協方差及協方差矩陣協方差 用來衡量兩個變數的總體誤差。只能對兩組資料進行分析 3.相關係數 correlation coefficience 可以對相關的密切程度進行度量弊端 因為沒有模型,所以無法進行 正態性檢驗 t檢驗 假設檢驗 異常值檢驗 箱線圖法 q1 位於25 ...