数据分析与挖掘实战-基于基站定位数据的商圈分析
生活随笔
收集整理的這篇文章主要介紹了
数据分析与挖掘实战-基于基站定位数据的商圈分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基于基站定位數(shù)據(jù)的商圈分析
- 背景
- 隨著個人手機(jī)終端的普及,出行群體中手機(jī)擁有率和使用率已經(jīng)達(dá)到相當(dāng)高的比例,手機(jī)移動網(wǎng)絡(luò)也基本上實現(xiàn)了城鄉(xiāng)空間區(qū)域的全覆蓋。根據(jù)手機(jī)信號在真實地理空間上的覆蓋情況,將手機(jī)用戶時間序列的手機(jī)定位數(shù)據(jù),映射至現(xiàn)實的地理空間位置,即可完整、客觀地還原出手機(jī)用戶的現(xiàn)實活動軌跡,從而挖掘得到人口空間分布與活動聯(lián)系的特征信息。
- 移動通信網(wǎng)絡(luò)的信號覆蓋邏輯上被設(shè)計成由若干個六邊形的基站小區(qū)相互鄰接而構(gòu)成的蜂窩網(wǎng)絡(luò)面狀服務(wù)區(qū),手機(jī)終端總是與其中某一個基站小區(qū)保持聯(lián)系,移動通信網(wǎng)絡(luò)的控制中心會定期或者不定期地主動或被動地記錄每個手機(jī)終端時間序列的基站小區(qū)編號信息。
- 商圈是現(xiàn)代市場中企業(yè)市場活動的空間,同時也是商品和服務(wù)享用者的區(qū)域。商圈劃分的目的之一是為了研究潛在的顧客的分布以制定適宜的商業(yè)對策。
- 目標(biāo)
- 從某通信運營商提供的特定接口解析得到用戶的定位數(shù)據(jù)。定位數(shù)據(jù)以基站小區(qū)進(jìn)行標(biāo)識,利用基站小區(qū)的覆蓋范圍作為商圈區(qū)域的劃分,那如何對用戶的歷史定位數(shù)據(jù)進(jìn)行科學(xué)的分析,歸納出商圈的人流特征和規(guī)律,識別出不同類別的商圈,選擇合適的區(qū)域進(jìn)行運營商的促銷活動?
- 故目標(biāo)如下
- 對用戶的歷史定位數(shù)據(jù),采用數(shù)據(jù)挖掘技術(shù),對基站進(jìn)行分群。
- 對不同的商圈分群進(jìn)行特征分析,比較不同商圈類別的價值,選擇合適的區(qū)域進(jìn)行運營商的促銷活動。
- 分析
- 手機(jī)用戶在使用短信業(yè)務(wù)、通話業(yè)務(wù)、開關(guān)機(jī)、正常位置更新、周期位置更新和切入呼叫的時候均產(chǎn)生定位數(shù)據(jù),定位數(shù)據(jù)記錄手機(jī)用戶所處基站的編號、時間和唯一標(biāo)識用戶的EMASI號等。歷史定位數(shù)據(jù)描繪了用戶的活動模式,一個基站覆蓋的區(qū)域可等價于商圈,通過歸納經(jīng)過基站覆蓋范圍的人口特征,識別出不同類別的基站范圍,即可等同地識別出不同類別的商圈。衡量區(qū)域的人口特征可從人流量和人均停留時間的角度進(jìn)行分析,所以在歸納基站特征時可針對這兩個特點進(jìn)行提取。
- 基于移動基站定位數(shù)據(jù)的商圈分析主要步驟
- 1)從移動通信運營商提供的特定接口上解析、處理、并濾除用戶屬性后得到用戶定位數(shù)據(jù)。
- 2)以單個用戶為例,進(jìn)行數(shù)據(jù)探索分析,研究在不同基站的停留時間,并進(jìn)一步進(jìn)行預(yù)處理,包括數(shù)據(jù)規(guī)約和數(shù)據(jù)變換。
- 3)利用步驟2)形成的已完成數(shù)據(jù)預(yù)處理的建模數(shù)據(jù),基于基站覆蓋范圍區(qū)域的人流特征進(jìn)行商圈聚類,對各個商圈分群進(jìn)行特征分析,選擇合適的區(qū)域進(jìn)行運營商的促銷活動。
- 處理過程
- 數(shù)據(jù)獲取
- 從運營商提供的接口解析、處理、并濾除用戶屬性之后得到位置數(shù)據(jù),以2014-1-1為開始時間,2014-6-30為結(jié)束時間作為分析的觀測窗口,抽取觀測窗口內(nèi)某市某區(qū)域的定位數(shù)據(jù)形成建模數(shù)據(jù)。
- 數(shù)據(jù)探索
- 對單個用戶軌跡進(jìn)行研究分析。
- 數(shù)據(jù)預(yù)處理
- 數(shù)據(jù)規(guī)約
- 數(shù)據(jù)變換
- 離差標(biāo)準(zhǔn)化
- 數(shù)據(jù)挖掘建模
- 構(gòu)建商圈聚類模型
- 采用層次聚類算法對建模數(shù)據(jù)進(jìn)行基于基站數(shù)據(jù)的商圈分析,畫出譜系聚類圖。
- 譜系聚類圖
- 從圖中看出,可以將聚類類別數(shù)取k=3,輸出結(jié)果typeindex為每個樣本對應(yīng)的類別號。
- # -*- coding:utf-8 -*-import pandas as pddef pic():standardizedfile = 'data/standardized.xls' # 標(biāo)準(zhǔn)化后的數(shù)據(jù)文件data = pd.read_excel(standardizedfile, index_col=u'基站編號') # 讀取數(shù)據(jù)import matplotlib.pyplot as pltfrom scipy.cluster.hierarchy import linkage, dendrogram# 這里使用scipy的層次聚類函數(shù)Z = linkage(data, method='ward', metric='euclidean') # 譜系聚類圖P = dendrogram(Z, 0) # 畫譜系聚類圖plt.show()def clu():# 參數(shù)初始化standardizedfile = 'data/standardized.xls' # 標(biāo)準(zhǔn)化后的數(shù)據(jù)文件k = 3 # 聚類數(shù)data = pd.read_excel(standardizedfile, index_col=u'基站編號') # 讀取數(shù)據(jù)from sklearn.cluster import AgglomerativeClustering # 導(dǎo)入sklearn的層次聚類函數(shù)model = AgglomerativeClustering(n_clusters=k, linkage='ward')model.fit(data) # 訓(xùn)練模型# 詳細(xì)輸出原始數(shù)據(jù)及其類別r = pd.concat([data, pd.Series(model.labels_, index=data.index)], axis=1) # 詳細(xì)輸出每個樣本對應(yīng)的類別r.columns = list(data.columns) + [u'聚類類別'] # 重命名表頭import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標(biāo)簽plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負(fù)號style = ['ro-', 'go-', 'bo-']xlabels = [u'工作日人均停留時間', u'凌晨人均停留時間', u'周末人均停留時間', u'日均人流量']pic_output = 'data/type_' # 聚類圖文件名前綴for i in range(k): # 逐一作圖,作出不同樣式plt.figure()tmp = r[r[u'聚類類別'] == i].iloc[:, :4] # 提取每一類for j in range(len(tmp)):plt.plot(range(1, 5), tmp.iloc[j], style[i])plt.xticks(range(1, 5), xlabels, rotation=20) # 坐標(biāo)標(biāo)簽plt.title(u'商圈類別%s' % (i + 1)) # 我們計數(shù)習(xí)慣從1開始plt.subplots_adjust(bottom=0.15) # 調(diào)整底部plt.savefig(u'%s%s.png' % (pic_output, i + 1)) # 保存圖片if __name__ == '__main__':# pic()clu()
- 構(gòu)建商圈聚類模型
- 后續(xù)處理
- 由不同類別的特征折線圖,商圈1日均人流量大,工作日上班時間人均停留時間、凌晨人均停留時間、周末人均停留時間短,類似商業(yè)區(qū),適合展開促銷活動。
- 數(shù)據(jù)獲取
- 補(bǔ)充說明
- 案例參考書《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》
- 與原書有借鑒,但是較大改動代碼
- 修復(fù)了原書一些舊版本代碼錯誤
- 具體數(shù)據(jù)集和代碼可以查看我的Github,歡迎star或者fork
總結(jié)
以上是生活随笔為你收集整理的数据分析与挖掘实战-基于基站定位数据的商圈分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新的一年2019
- 下一篇: Web开发-Django初识及实战