1. 程式人生 > >python資料探勘 商品推薦演算法

python資料探勘 商品推薦演算法

利用親和性分析進行商品推薦

import numpy as np
dataset_filename=("affinity_dataset.txt")
X=np.loadtxt(dataset_filename)

print(X[:5])

#麵包、牛奶、乳酪、蘋果和香蕉



#計算資料集中有多少個人買了蘋果
num_apple_purchases=0
for sample in X:
    if sample[3]==1:
        num_apple_purchases+=1
print("{0}人購買了蘋果".format(num_apple_purchases))


#計算資料集中有多少個人買了香蕉
num_banana_purchases=0
for sample in X:
    if sample[4]==1:
        num_banana_purchases+=1
print("{0}人購買了香蕉".format(num_banana_purchases))


#統計資料集中所有有規則的資料,。首先分別為規則應驗和規則無效這兩種情況建立字典
#“如果顧客購買了蘋果,他們也會買香蕉”就用(3, 4)表示
from collections import defaultdict #使用預設字典,如果查詢鍵不存在,會返回一個預設值
valid_rules=defaultdict(int)#有規則應驗
invalid_rules=defaultdict(int)#規則無效
num_occurances=defaultdict(int)#條件相同的規則數量

#計算過程需要用迴圈結構依次對每個個體特徵值進行處理,第一個特徵為規則的前提條件--顧客購買了某一種商品
for sample in X:
    for premise in range(4):
        if sample[premise]==0:#如果個體不滿足條件,即沒有買當前商品,繼續
            continue
        num_occurances[premise]+=1
        for conclusion in range(premise,5):
            if premise==conclusion:
                continue
            if sample[conclusion]==1:
                valid_rules[(premise,conclusion)]+=1
            else:
                invalid_rules[(premise,conclusion)]+=1
#計算支援度
support=valid_rules
#計算置信度,遍歷每條規則計算
confidence=defaultdict(float)
for premise,conclusion in valid_rules.keys():
    rule=(premise,conclusion)
    confidence[rule]=valid_rules[rule]/num_occurances[premise]#用符合每一條規則的數量總數/元組中年第一條商品的數量

features=['麵包','牛奶','乳酪','蘋果','香蕉']

#現在我們已經得到了支援度字典和置信度字典,現在定義函式輸出每條規則以及支援度和置信度
def show(premise,conclusion,support,confidence,features):
    premise_name=features[premise]
    conclusion_name=features[conclusion]
    print('Rule:如果一個人購買了{0}他將也會買{1}'.format(premise_name,conclusion_name))
    print('支援數是{0}'.format(support[(premise,conclusion)]))
    print('置信度是{0:.3f}'.format(confidence[(premise,conclusion)]))
    print('\n\n')
#     print (confidence,type(confidence))
#     print(support,type(support))

# if __name__=='__main__':
    
#     prem=1
#     con=3
#     show(prem,con,support,confidence,features)

#得到所有規則的支援度和置信度之後,為了找出最佳規則,還需要根據支援度和置信度對規則進行排序。
#要找出支援度最高的規則,首先對支援度字典進行排序,字典的items()函式返回包含字典所有元素的列表,並且使用itemgetter()作為鍵,對巢狀列表進行排序,
#itemgetter(1)表示以字典各元素的值(這裡指支援度)為依據進行排序,reverse=true表示降序排列

from operator import itemgetter
#根據支援度進行排序
sortd_support=sorted(support.items(),key=itemgetter(1),reverse=True)

#根據置信度進行排序
sortd_confidence=sorted(confidence.items(),key=itemgetter(1),reverse=True)
print(sortd_support)
#排序完成,輸出支援度前五的規則
for i in range(5):
    print('Role規則#{0}'.format(i+1))
    (premise,conclusion)=sortd_support[i][0]#獲取元組值
    show(premise,conclusion,support,confidence,features)

#輸出置信度前五的規則
# for i in range(5):
#     print('Role規則#{0}'.format(i+1))
#     (premise,conclusion)=sortd_confidence[i][0]#獲取元組值
#     show(premise,conclusion,support,confidence,features)



相關推薦

python資料 商品推薦演算法

利用親和性分析進行商品推薦 import numpy as np dataset_filename=("affinity_dataset.txt") X=np.loadtxt(dataset_filename) print(X[:5]) #麵包、牛奶、乳酪、蘋果和香蕉

python資料入門與實踐-----------通過親和力分析推薦電影(Apriori)

嚶~本節程式碼比著書上的原始碼看了一遍並加上了自己的理解註釋,但並沒有執行成功,因為他執行警告,我還不會改錯 親和力分析:從頻繁出現的商品中選取共同出現額商品組成頻繁項集,生成關聯規則 import os import pandas as pd import sys #資料讀取 rating

資料十大演算法(一):決策樹演算法 python和sklearn實現

學完到第三章——決策樹,python程式碼實現的僅是ID3演算法,sklearn為優化過的C4.5,這裡做一個詳細的總結包括(原理、程式碼、視覺化、scikit-learn實現),皆為親自實踐後的感悟。以下進入正文。 早前簡單瞭解了決策樹的原理,然後為了儘快使用便沒有深究直

Python資料:利用聚類演算法進行航空公司客戶價值分析

無小意丶 個人部落格地址:無小意 知乎主頁:無小意丶 公眾號: 資料路(shuju_lu) 剛剛開始寫部落格,希望能保持關注,會繼續努力。 以資料相關為主,網際網路為輔進行文章釋出。 本文是《Python資料分析與挖掘實戰》一書的實戰部分,在整理分析後的復現。 本篇文

資料十大演算法(九):樸素貝葉斯 python和sklearn實現

第三個演算法終於算是稍有了解了,其實當你結合資料瞭解了它的實現原理後,你會發現確實很樸素。這裡對樸素貝葉斯演算法做一個介紹和總結,包括(原理、一個程式碼示例、sklearn實現),皆為親自實踐後的感悟,下面進入正文。 原理: 首先我們需要了解概率論的一些簡單知識:

資料推薦分析--python實現

# #  FILTERINGDATA.py # #  Code file for the book Programmer's Guide to Data Mining #  http://guidetodatamining.com #  Ron Zacharski # #

資料十大演算法(五):EM(Expectation Maximum)演算法原理與Python實現

參考: 一、一個簡單的概率問題 實驗:現在有A和B兩個硬幣,我們從這兩個硬幣中,隨機選取5次,做5組實驗,每組實驗內容是:丟擲所選的硬幣,記錄正反面。 實驗資料如下: 目標:根據所得到的實驗資料,分別求出硬幣A和B丟擲後正面向上的概率。 根據古典概率的原

資料十大演算法(九):樸素貝葉斯原理、例項與Python實現

一、條件概率的定義與貝葉斯公式 二、樸素貝葉斯分類演算法 樸素貝葉斯是一種有監督的分類演算法,可以進行二分類,或者多分類。一個數據集例項如下圖所示: 現在有一個新的樣本, X = (年齡:<=30, 收入:中, 是否學生:是, 信譽:中),目標是利用樸素貝

Python資料課程】八.關聯規則挖掘及Apriori實現購物推薦

        這篇文章主要介紹三個知識點,也是我《資料探勘與分析》課程講課的內容。        1.關聯規則挖掘概念及實現過程;        2.Apriori演算法挖掘頻繁項集;        3.Python實現關聯規則挖掘及置信度、支援度計算。一. 關聯規則挖掘概

python資料課程】二十.KNN最近鄰分類演算法分析詳解及平衡秤TXT資料集讀取

這是《Python資料探勘課程》系列文章,也是我這學期上課的部分內容及書籍的一個案例。本文主要講述KNN最近鄰分類演算法、簡單實現分析平衡秤資料集,希望這篇文章對大家有所幫助,同時提供些思路。內容包括:

分享《Python資料入門與實踐》高清中文版+高清英文版+原始碼

下載:https://pan.baidu.com/s/1J7DOGrjoF7HnaSZ8LvFh_A更多資料分享:http://blog.51cto.com/3215120 《Python資料探勘入門與實踐》高清中文版+高清英文版+原始碼 高清中文版PDF,251頁,帶目錄和書籤,能夠複製貼上;高清英文版

python資料分析微信朋友圈

參考https://blog.csdn.net/qinyuanpei/article/details/79360703,基於python3.6實現微信朋友圈性別、地區、個性簽名、頭像四個維度的分析。 我的GitHub專案地址https://github.com/sanciyuan/wechat_

資料之FP_Tree演算法實現

轉自http://www.cnblogs.com/zhangchaoyang/articles/2198946.html (格式複製之後有變化,建議直接點連結去部落格園看原文) python程式碼見https://github.com/yantijin/Lean_DataMining F

資料聚類演算法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

[Python資料]第3章、資料探索

1、缺失值處理:刪除、插補、不處理 2、離群點分析:簡單統計量分析、3σ原則(資料服從正態分佈)、箱型圖(最好用) 離群點(異常值)定義為小於QL-1.5IQR或大於Qu+1.5IQR import pandas as pd catering_sale = '../data/catering

Python資料入門與實戰:第一章

程式碼來源於:https://github.com/hLvMxM/Learning_Data_Mining_with_Python/blob/master/Chapter 1/ch1_affinity.ipynb 其中註釋是在自己學習中加上去的, 便於初學者看懂 分析文字為:affinity

資料倉庫與資料之Apriori演算法例項

最近剛上了資料探勘這門課,老師講了兩個演算法,即Apriori演算法和FP-growth演算法,然後佈置了上機作業,挖掘一個有8萬行的記錄的retail.dat,需要從中找出強規則,即同時滿足最小支援度和最小置信度的規則。 Apriori演算法 在這裡給出一個實現找出所有頻繁模式集的

Python資料過程

資料探勘的建模過程 定義挖掘目標 明確系統完成後想要達成什麼樣的效果。 我們需要分析應用領域,瞭解相關領域的情況,熟悉背景知識,弄清使用者需求。 資料取樣 從業務系統中抽取一個與挖掘目標相關的樣本資料子集。 抽取資料的標準,一是相關性,二是可靠性,三是有效性。 衡量取樣

Python資料的——資料探索詳解

資料質量分析: 資料質量的分析是資料分析資料中有效資料準備過程中的一個重要環節。是資料預處理的前提重要的環節。也是為資料探勘的分析的有效性和準確性的基礎。 資料質量的分析主要是原始資料中是否存在骯資料。髒資料包括是:缺失值 不一致的資料 重複資料或者是特殊的符號 資料特徵分析:

python資料——資料預處理

在資料探勘中 海量的資料存在大量的不完整(有缺失值)、不一致 有異常的資料,嚴重影響到資料的挖掘的建模過程執行的效率。甚至導致挖掘的資料結果偏差甚大。資料探勘預處理的過程中主要包括:資料清洗,資料整合,資料變換,資料規約。 處理過程如圖: 4.1 資料的清洗主要是對原始資料集中的無