免費試用
banner
大數據平台>大數據技術與應用>Pytho中nK-均值聚類

Python中用K-均值聚類來探索顧客細分

作者: afenxi來源: afenxi時間:2016-12-27 10:55:350

基於 Python 的顧客細分

在這篇文章中_|_裙地垫卫生巾,我要談的東西是相對簡單__军星网成绩查询,但卻是對任何業務都很重要的|_诺基亚5320xm软件下载:客戶細分-易彩娱乐1957。客戶細分的核心是能夠識別不同類型的客戶-_-锡盟蒙中,然後知道如何找到更多這樣的人-|初二英语教学工作总结,這樣你就可以…你猜對了__浪翻云博客,獲得更多的客戶|-_土左旗吧!在這篇文章中__-夏朝嘉,我將詳細介紹您如何可以使用K-均值聚類來完成一些客戶細分方麵的探索_-r6多少钱。

我們的數據

我們使用的數據來自 John Foreman 的《智能數據》--银项圈。該數據集包含了營銷快訊/電郵推廣(電子郵件發送報價)和來自客戶的交易層麵數據(提供的數據來自客戶期望和最終購買)這兩個信息--永胜国际是干嘛的。

 

Python 1 2 3 4 import pandas as pd df_offers = pd.read_excel("./WineKMC.xlsx", sheetname=0) df_offers.columns = ["offer_id", "campaign", "varietal", "min_qty", "discount", "origin", "past_peak"] df_offers.head() Python中用K-均值聚類來探索顧客細分-數據分析網

交易層麵的數據…

Python 1 2 3 4 df_transactions = pd.read_excel("./WineKMC.xlsx", sheetname=1) df_transactions.columns = ["customer_name", "offer_id"] df_transactions[n] = 1 df_transactions.head()

Python中用K-均值聚類來探索顧客細分-數據分析網 K-均值快速入門

為了細分客戶--n0470,我們需要一種方法來對它們進行比較_|_000712股吧。要做到這一點__|中兴彩票下载,我們將使用K-均值聚類-报考澳门大学。K-均值是一種獲取一個數據集|||345彩票网导,並從中發現具有類似性質點的組合(或簇)的方法-胶衣束缚。K-均值的工作原理是||乔洋演唱会,最小化各個點與各簇中點之間的距離_018期富婆看图肖特,並以此來進行分組|--234彩票网络平台。

想一個最簡單的例子--至尊彩怎么下载。如果我告訴你為下麵這些點創建 3 個組__2018大乐透148期,並在每個組的中間繪製一個星星|金立gn380刷机,你會怎麼做-||云顶娱乐下载官网100?

Python中用K-均值聚類來探索顧客細分-數據分析網

可能(或希望)是這樣的…

Python中用K-均值聚類來探索顧客細分-數據分析網

在K-均值中|五家渠政务网,“ x ”的被稱為“重心”|_易旺彩票主页,並指出(你猜對了)|冯绍峰的qq,給定簇的中心__易赢在线注册。我不打算詳細講述K-均值實際上是怎什麼樣運作的|||临泉二手房,但希望這說明會給你一個不錯的想法|__芬迪斯。

將客戶分類

好吧__隆化教育信息中心,那麼-_-优衣库视频bt种子,如何我們的客戶該怎麼分類呢|程妙可?因為我們試圖更多地了解我們客戶的行為--|飞鹤航空官网,我們可以用他們的行為(根據他們是否在收到報價後進行了采購)-_|苯胺基丙酸,以此將有類似想法的客戶分類在一起|_-鲁阁初恋。然後||_陕西省公务员局网,我們可以研究這些群體_倚天2私服吧,來尋找模式和趨勢|||男科悍医,來幫助我們製定未來的報價_-_1990娱乐彩票。

我們最需要的就是一種比較客戶的方法-|脉动时空测速中心。要做到這一點|-|22彩票ios,我們要創建一個矩陣_|青州卫校,包含每個客戶和他們是否回應了報價的一個 0/1 指標-|英杰交流中心。在 Python 中-易旺彩票可以提现嘛,這是很容易做到的_-铁路运输安全保护条例:

 

Python 1 2 3 4 5 6 7 8 # join the offers and transactions table df = pd.merge(df_offers, df_transactions) # create a "pivot table" which will give us the number of times each customer responded to a given offer matrix = df.pivot_table(index=[customer_name], columns=[offer_id], values=n) # a little tidying up. fill NA values with 0 and make the index into a column matrix = matrix.fillna(0).reset_index() # save a list of the 0/1 columns. well use these a bit later x_cols = matrix.columns[1:]

現在創建簇___反间谍工作的主管单位是,我們將使用 scikit-learn 庫中 KMeans 的功能--邯郸晚报电子版。我任意選擇了 5 個簇_|-12期富婆看图肖特。我一般的經驗法則是|-11086移动彩票登陆,我進行分類的記錄數至少是類別數的 7 倍_||09被骗20w。

 

Python 1 2 3 4 5 6 7 8 9 10 11 from sklearn.cluster import KMeans cluster = KMeans(n_clusters=5) # slice matrix so we only include the 0/1 indicator columns in the clustering matrix[cluster] = cluster.fit_predict(matrix[matrix.columns[2:]]) matrix.cluster.value_counts() 2    32 1    22 4    20 0    15 3    11 dtype: int64 Python中用K-均值聚類來探索顧客細分-數據分析網

簇可視化

一個很酷的技巧--街头篮球葡萄论坛,這可能是學校沒有教你的|-|360彩票导航走势图,主成分分析|_|坎墩房屋出租。它有很多用途_无氨显影液,但今天我們將用它來將我們的多維數據集轉化到一個二維數據集-|宜昌隆胸。 你問為什麼要這樣做_||行会名字竖起来?一旦它在二維中(或簡單地說|_重庆公安局长,它有 2 列)|--北京木樨园服装批发市场,它就會變得更容易繪製-|_双城市政府网!

再一次, scikit-learn 發揮作用了!

Python 1 2 3 4 5 6 7 8 9 from sklearn.decomposition import PCA pca = PCA(n_components=2) matrix[x] = pca.fit_transform(matrix[x_cols])[:,0] matrix[y] = pca.fit_transform(matrix[x_cols])[:,1] matrix = matrix.reset_index() customer_clusters = matrix[[customer_name, cluster, x, y]] customer_clusters.head() Python中用K-均值聚類來探索顧客細分-數據分析網

我們所做的就是我們把 x_cols 列設定為 0/1 指標變量,我們已經把他們變成了一個二維的數據集-__重庆食品舞厅。我們任取一列__-亿彩彩票平台可靠吗?,稱之為 x,然後把其餘剩下的叫 y-河间市电视台。現在我們可以把每一個點都對應到一個散點圖中|创业 我们的故事。我們將基於它的簇編碼每個點的顏色-__坏蛋是炼成的2,可以讓它們更清晰_-|1号计划app。

 

Python 1 2 3 4 5 6 7 8 df = pd.merge(df_transactions, customer_clusters) df = pd.merge(df_offers, df) from ggplot import * ggplot(df, aes(x=x, y=y, color=cluster)) +     geom_point(size=75) +     ggtitle("Customers Grouped by Cluster") Python中用K-均值聚類來探索顧客細分-數據分析網

如果你要搞點花樣,你也可以畫出各簇的中心-_焊锡大师。這些都存儲在 KMeans 實例中的 cluster_centers_ 變量__扬州八怪画竹子的是谁。確保你也可以將簇心轉換為二維投影-|-众赢国际是合法的吗。

 

Python 1 2 3 4 5 6 7 8 cluster_centers = pca.transform(cluster.cluster_centers_) cluster_centers = pd.DataFrame(cluster_centers, columns=[x, y]) cluster_centers[cluster] = range(0, len(cluster_centers)) ggplot(df, aes(x=x, y=y, color=cluster)) +     geom_point(size=75) +     geom_point(cluster_centers, size=500) +     ggtitle("Customers Grouped by Cluster") Python中用K-均值聚類來探索顧客細分-數據分析網

對簇更深的挖掘

讓我們在簇中更深入得挖掘吧_傲霸九州星辰。以第 4 簇為例-|-永盛国际投资集团。如果我們挑出簇4_电影频道节目预告,並將其與餘下的客戶比較__毕业生登记表班组鉴定,我們就可以開始尋找可供我們利用的_|至尊争霸彩票安全吗、有趣的方方麵麵_-_256手机彩票网。

作為一個基準__阿呀,看看簇4與其它簇的葡萄品種對比--|y阅头条。事實證明-_|爱死美女网,幾乎所有的Cabernet Sauvignon(赤霞珠)都是由簇4的成員購買的|-168开奖1680380com。另外|海南马自达官方网站,簇4中沒有一個人買了Espumante(意大利蘇打白葡萄酒)_传奇归来刺客武器。

 

Python 1 2 df[is_4] = df.cluster==4 df.groupby("is_4").varietal.value_counts()

Python中用K-均值聚類來探索顧客細分-數據分析網 你還可以細分出數值功能_|_银监会待遇。例如_|35彩票网址,看看為何4號簇與其它簇在min_qty的平均值上表現迥異_许小年微博。似乎簇4的成員都喜歡大批量購買__-cf易美!

 

Python 1 df.groupby("is_4")[[min_qty, discount]].mean() Python中用K-均值聚類來探索顧客細分-數據分析網 Python中用K-均值聚類來探索顧客細分-數據分析網

結語

雖然它不會神奇地告訴你所有的答案|-_霍炽昌,但分群是一個很好的探索性嚐試___雪弗莱suv,可以幫助你更多地了解你的客戶__-2018大乐透。有關K-均值和客戶細分的更多信息|-|许绍峰,請查看以下資源_-_赢钱彩APP靠谱吗:

INSEAD Analytics Cluster Analysis and Segmentation Post Customer Segmentation at Bain & Company Customer Segmentation Wikipedia

這篇所用代碼請查閱 這裏_摄位车。

本文由 伯樂在線 - 高冷的精神汙染 翻譯_闪电强效瘦,toolate 校稿|_诺基亚6120c手机软件下载。 英文出處_-服务业会计科目:Greg___亿客隆彩票app。

原創文章__心跳宝贝之青涩回忆,作者上海麦当劳网上订餐:古思特||班超之志,如若轉載||-01彩票真的能赚钱吗,請注明出處_|-腾讯客服网站:《Python中用K-均值聚類來探索顧客細分》https://www.afenxi.com/post/10571

banner
看過還想看
可能還想看
熱點推薦
Yonghong的價值觀-_王晶女儿:以卓越的數據技術為客戶創造價值||_淘宝网怎么开店,實現客戶成功_-跆拳道太子妃。