作者:Nature
出品:AI機器思維
“從資料處理基礎紮實練習是資料分析與資料挖掘的第一步”
做一道好菜需要食材,好的食材需要經過優質的萃取提煉。食材的提煉過程包括選型、運輸保鮮、加工清洗、按要求切菜等才能按菜單進行真正的做出一道口感美味的菜。大資料時代資料分析與資料挖掘關鍵的一步在處理食材,這裡的各類資料就是我們的食材,選擇優質的資料,經過深加工清洗,去僞純真這個過程需要耗費很長時間,也需要更多的實踐經驗。根據多年經驗,要想運用好資料,首先要研究學習對各種類型的資料進行處理(如各類資料庫資料、EXCEL資料、TXT資料、DAT資料等等)。無論用那種語言做資料分析與資料挖掘,首先得有資料食材,對于資料分析與資料挖掘工具隻是幫助我們更好的做出一道好菜,正如開車,那種車都能到達目的地,技術不同效率不同,安全系數也不同。
資料分析與資料挖掘的工具目前主流的是SAS、python、R等。這些資料分析挖掘工具能對海量的資料進行處理分析與挖掘。業界中用到的資料量都超過GB級别,研究資料處理,學好資料處理是萬裡長征第一步,也是學習資料分析與資料挖掘的核心。練習基本功需要耐心和毅力,也需要學習方式。
建議學習方式如下:
○對各類資料每一種類型的資料處理根據案例學習并總結資料處理經驗。
○對資料處理生成能夠被資料分析與資料挖掘工具的資料集進行二次加工處理,需要了解業務衍生業務資料名額,這是一個深加工的過程。根據資料分析和資料挖掘目标找幾個案例真正落實,多加練習。
○資料分析與資料挖掘的過程就是運用工具中已經内置好的資料分析工具以及函數包的過程,這個過程隻是占了整個資料分析與資料挖掘的百分之三十的工作量,大部分時間都是在做資料處理的清洗工作。
○資料分析報告可以研習案例寫作,資料挖掘結果分析根據研習的案例學習。資料分析與資料挖掘真正上手的方式就是加大案例學習與實踐,跟着案例手把手練習,才能真正掌握資料分析與資料挖掘的真谛。
案例如下面是零售客戶資料,檔案名buy.txt,目前存放在我的個人檔案夾:
E:/testdata/buy.txt
資料說明:資料中每列為面包、牛奶、奶酪、蘋果和香蕉
對此類資料研究客戶交叉銷售,根據客戶購買行為判斷客戶在買其中一種食物時會購買那類食物,這樣把客戶可能購買機率最高的放在貨架上相同的位置。是以處理資料是核心環節:
下面是python3.7版本下資料處理程式,資料檔案以”|”分割,處理資料時程式指明了分隔符。這裡的x=np.loadtxt(dataset_filename,delimiter='|')語句中delimiter=’|’指明了資料以|分割,預設是以空格,如果以空格就需要這個參數了。
importtnumpyas np
dataset_filename="E:/testdata/buy.txt"
x=np.loadtxt(dataset_filename,delimiter='|')
print(x[:6])
複制
檢視資料處理的資料如下:
輸出結果從橫向和縱向看都可以,橫着看,每次隻看一行。第一行(0, 0, 0, 1,1)表示 第一條交易資料所包含的商品。豎着看,每一列代表一種商品。在我們這個例子中,這五種商品分别是面包、牛奶、奶酪、蘋果和香蕉。從第一條交易資料中,我們可以看到顧客購買了蘋果和香蕉,但是沒有買面包、牛奶和奶酪。每個特征隻有兩個可能的值,1或0,表示是否購買了某種商品,而不是購買商品的數量。1 表示顧客至少買了該商品,0表示顧客沒有買該種商品。
我們要找出“如果顧客購買了商品X,那麼他們可能願意購買商品Y”這樣 的規則。簡單粗暴的做法是,找出資料集中所有同時購買的兩件商品。找出規則後,還需要判斷其優劣,我們挑好的規則用。規則的優劣有多種衡量方法,常用的是支援度(support)和置信度(confidence)。 支援度指資料集中規則應驗的次數,統計起來很簡單。有時候,還需要對支援度進行規範化,即再除以規則有效前提下的總數量。我們這裡隻是簡單統計規則應驗的次數。
支援度衡量的是給定規則應驗的比例,而置信度衡量的則是規則準确率如何,即符合給定條件(即規則的“如果”語句所表示的前提條件)的所有規則裡,跟目前規則結論一緻的比例有多大。計算方法為首先統計目前規則的出現次數,再用它來除以條件(“如果”語句)相同的規則數量。 接下來,通過一個例子來說明支援度和置信度的計算方法,我們看一下怎麼求“如果顧客購買了蘋果,他們也會購買香蕉”這條規則的支援度和置信度。如下面的代碼所示,通過判斷交易資料中sample[3]的值,就能知道一個顧客是否買了蘋果。 這裡,sample表示一條交易資訊,也就是資料集裡的一行資料。
num_apple_purchases=0
for sample in x:
if sample[3]==1:
num_apple_purchases+=1
print("{0}people bought apples".format(num_apple_purchases))
複制
下面是程式執行後統計購買蘋果的結果:
同理,檢測sample[4]的值是否為1,就能确定顧客有沒有買香蕉。現在可以計算題目給定規則在資料集中的出現次數,進而計算置信度和支援度。 我們需要統計資料集中所有規則的相關資料。首先分别為規則應驗和規則無效這兩種情況創 建字典。字典的鍵是由條件和結論組成的元組,元組元素為特征在特征清單中的索引值,不要用 實際特征名,比如“如果顧客購買了蘋果,他們也會買香蕉”就用(3, 4)表示。如果某個個體的條件和結論均與給定規則相符,就表示給定規則對該個體适用,否則如果通過給定條件推出的結論與給定規則的結論不符,則表示給定規則對該個體無效。 為了計算所有規則的置信度和支援度,首先建立幾個字典,用來存放計算結果。這裡使用defaultdict,好處是如果查找的鍵不存在,傳回一個預設值。
附件:以空格分隔資料案例,整個程式源代碼,資料可以自己多創造幾條,如需要資料檔案請留言,跟着案例學習可以更好的體驗應用價值,提供學習興趣:
運作結果如下:
從排序結果來看,“顧客買蘋果,也會買奶酪”和“顧客買奶酪,也會買香蕉”,這兩條規 則的支援度和置信度都很高。超市可以根據這些規則來調整商品擺放位置。例如如果蘋果促銷,就在旁邊擺上奶酪。但是香蕉和奶酪同時搞促銷就沒有多大意義了,因為我們發現購買奶酪的顧客中,接近66%的人即使不搞促銷也會買香蕉——即使搞促銷,也不會給銷量帶來多大提升。 從上面這個例子就能看出從海量的資料中進行資料挖掘的洞察力有多強大,幫助我們發現資料背後的資訊提升決策依據,指導經營提升營收。人們可以用資料挖掘技術探索資料集中各變量之間的關系,尋找商業價值,商品組合價值,營銷價值等。
學好資料挖掘,資料處理是關鍵,其他就是引用統計學的方法以及機器學習的算法等!