日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
利用Python進行商品的親和性分析

本文轉(zhuǎn)載自微信公眾號「菜J學Python」,作者J哥、小屁孩i 。轉(zhuǎn)載本文請聯(lián)系菜J學Python公眾號。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務古交,十余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

大家好,我是J哥。

如今這個社會是一個數(shù)字社會,在各大領域里面最為顯著的應該是數(shù)據(jù)吧。就目前而言,大數(shù)據(jù)已經(jīng)越來越流行了,我們不管在什么領域上都能接觸到數(shù)據(jù)的,并且現(xiàn)在很多企業(yè)已經(jīng)累計了大量的數(shù)據(jù)。很多人開始朝向大數(shù)據(jù)開發(fā)以及大數(shù)據(jù)分析這兩個方向發(fā)展了。

那么也許你會問,哪這兩個方向更加值得轉(zhuǎn)行呢?很多人也在這兩個方向糾結(jié),在這里我想告訴你們的是,沒有什么是最優(yōu)選擇,你感興趣的才是最好的選擇。這邊,我選擇的是大數(shù)據(jù)分析!現(xiàn)在讓我們進入數(shù)據(jù)分析的一個環(huán)節(jié)——數(shù)據(jù)挖掘。

01數(shù)據(jù)挖掘簡介

數(shù)據(jù)挖掘旨在讓計算機根據(jù)已有數(shù)據(jù)做出決策。決策可以是預測明年的銷量,人口的數(shù)目,攔截垃圾郵件,檢測網(wǎng)站的語言。到目前為止,數(shù)據(jù)挖掘已經(jīng)有很多的應用,即使這樣很多新的應用領域也在不斷出現(xiàn)。

數(shù)據(jù)挖掘涉及到算法,最優(yōu)策略,統(tǒng)計學,工程學和計算機科學相關領域的知識。除此之外我們還會用到語言學,神經(jīng)科學,城市規(guī)劃等其他領域的概念或知識。想要充分發(fā)揮數(shù)據(jù)挖掘的威力,算法肯定是必備的。(在這里推薦讀者去刷一刷LeetCode)

一般來說數(shù)據(jù)挖掘有這三個基本步驟:1、創(chuàng)建數(shù)據(jù)集。數(shù)據(jù)集能直接反應一些真實事件;2、選擇算法。選擇一個合適的算法才能更好的對數(shù)據(jù)進行處理;3、優(yōu)化算法。每種數(shù)據(jù)挖掘算法都有參數(shù),它們或是算法自身包含的,或是使用者添加的,這些參數(shù)會影響算法的具體決策。

02親和性分析案例

現(xiàn)在讓我們用一個例子說明。不知道你逛超市的時候,是否發(fā)現(xiàn)超市里面基本上都是按照商品的種類來分區(qū)域的,然而有些東西是存在例外的,一件商品的旁邊擺放著不一樣種類的商品。不知道你是否有發(fā)現(xiàn)這個現(xiàn)象,有沒有對此感到不解。這邊我想跟你說的是,這種擺放也是有道理的,這個道理是商品之間的親和性!

前置知識:

 
 
 
 
  1. (1)defaultdict(int):初始化為 0    
  2. (2)defaultdict(float):初始化為 0.0   
  3. (3)defaultdict(str):初始化為 ''

這里的defaultdict(function_factory)構(gòu)建的是一個類似dictionary的對象其中keys的值,自行確定賦值,但是values的類型,是function_factory的類實例而且具有默認值。比如default(int)則創(chuàng)建一個類似dictionary對象里面任何的values都是int的實例,而且就算是一個不存在的key, d[key] 也有一個默認值,這個默認值是int()的默認值0。

03代碼實現(xiàn)

現(xiàn)在進行代碼部分:

 
 
 
 
  1. import  numpy as np
  2. from collections import defaultdict
  3. dataset_filename = "affinity_dataset.txt"
  4. features = ["bread","milk","cheese","apple","banana"]  #猜一下這個是干嘛用的
  5. X = np.loadtxt(dataset_filename)
  6. print(X[:5])   #打印前五行的購物信息

統(tǒng)計一下購買蘋果和香蕉的人數(shù):

 
 
 
 
  1. num_apple_purchases = 0 # 初始化一個購買蘋果人數(shù)的變量
  2. for sample in X:
  3.     if sample[3] == 1:
  4.         num_apple_purchases+=1
  5. print("{0} people bought Apples ".format(num_apple_purchases))
  6. num_banana_purchases = 0
  7. for sample in X:
  8.     if sample[4] == 1:
  9.         num_banana_purchases += 1
  10. print("{0} people bought banana".format(num_banana_purchases))

現(xiàn)在為了計算規(guī)則的置信度還有支持度,我們可以用字典的形式來存放計算結(jié)果:

 
 
 
 
  1. valid_rules = defaultdict(int)
  2. invalid_rules = defaultdict(int)
  3. num_occurances = defaultdict(int)
  4. for sample in X:
  5.     for premise in range(4):
  6.         if sample[premise] ==0 :
  7.             continue
  8.         num_occurances[premise] +=1  #當顧客有購買物品時key對應的時value變?yōu)?
  9.         for conclusion in range(4):
  10.             if premise == conclusion:  #訪問同一個key 的時候是沒有意義的直接跳過
  11.                 continue
  12.             if sample[conclusion] == 1:
  13.                 valid_rules[(premise,conclusion)] +=1
  14.             else:
  15.                 invalid_rules[(premise,conclusion)] +=1

得到所有必要的統(tǒng)計量后,我們再來計算每條規(guī)則的支持度和置信度。如前所述,支持度就是規(guī)則應驗的次數(shù):

 
 
 
 
  1. support = valid_rules
  2. #置信度的計算方法類似,遍歷每條規(guī)則進行計算
  3. confidence = defaultdict(float)
  4. for premise,conclusion in valid_rules.keys():
  5.     rule = (premise,conclusion)
  6.     confidence[rule] = valid_rules[rule]/num_occurances[premise]

聲明一個函數(shù),接收的參數(shù)有:分別作為前提條件和結(jié)論的特征索引值、支持度字典、置信度字典以及特征列表。

 
 
 
 
  1. def print_rule(premise, conclusion,support , confidence,features):
  2.     premise_name = features[premise]
  3.     conclusion_name = features[conclusion]
  4.     print("Rule:if a person buys {0} they will also buy {1} ".format(premise_name,conclusion_name))
  5.     print(" - Support : {0}".format(support[(premise,conclusion)]))
  6.     print(" - Confidence : {0:.3f}".format(confidence[(premise,conclusion)]))
  7. premise = 1
  8. conclusion = 3
  9. features = ["bread","milk","cheese","apple","banana"]
  10. print_rule(premise,conclusion,support,confidence,features)
  11. from  operator import itemgetter
  12. sorted_support = sorted(support.items(),key=itemgetter(1),reverse=True)

排序完成后,就可以輸出支持度最高的前5條規(guī)則:

 
 
 
 
  1. for index in range(5):
  2.     print("Rule #{0}".format(index+1))
  3.     premise,conclusion = sorted_support[index][0]
  4.     print_rule(premise,conclusion,support,confidence,features)

以上就是我們這次所學的數(shù)據(jù)挖掘之商品親和性分析了。


分享題目:利用Python進行商品的親和性分析
分享URL:http://m.5511xx.com/article/coojshp.html