0 前言
?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是
?? 基于大數(shù)據(jù)的基站數(shù)據(jù)分析與可視化
該項目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦!
??學(xué)長這里給一個題目綜合評分(每項滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點:3分
?? 更多資料, 項目分享:文章來源:http://www.zghlxwxcb.cn/news/detail-801186.html
https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-801186.html
課題背景
- 隨著當(dāng)今個人手機終端的普及,出行群體中手機擁有率和使用率已達到相當(dāng)高的比例,手機移動網(wǎng)絡(luò)也基本實現(xiàn)了城鄉(xiāng)空間區(qū)域的全覆蓋。根據(jù)手機信號在真實地理空間上的覆蓋情況,將手機用戶時間序列的手機定位數(shù)據(jù),映射至現(xiàn)實的地理空間位置,即可完整、客觀地還原出手機用戶的現(xiàn)實活動軌跡,從而挖掘得到人口空間分布與活動聯(lián)系特征信息。移動通信網(wǎng)絡(luò)的信號覆蓋從邏輯上被設(shè)計成由若干六邊形的基站小區(qū)相互鄰接而構(gòu)成的蜂窩網(wǎng)絡(luò)面狀服務(wù)區(qū),手機終端總是與其中某一個基站小區(qū)保持聯(lián)系,移動通信網(wǎng)絡(luò)的控制中心會定期或不定期地主動或被動地記錄每個手機終端時間序列的基站小區(qū)編號信息。
- 商圈是現(xiàn)代市場中企業(yè)市場活動的空間,最初是站在商品和服務(wù)提供者的產(chǎn)地角度提出,后來逐漸擴展到商圈同時也是商品和服務(wù)享用者的區(qū)域。商圈劃分的目的之一是為了研究潛在的顧客的分布以制定適宜的商業(yè)對策。
分析方法與過程
初步分析:
- 手機用戶在使用短信業(yè)務(wù)、通話業(yè)務(wù)、開關(guān)機、正常位置更新、周期位置更新和切入呼叫的時候均產(chǎn)生定位數(shù)據(jù),定位數(shù)據(jù)記錄手機用戶所處基站的編號、時間和唯一標(biāo)識用戶的EMASI號等。歷史定位數(shù)據(jù)描繪了用戶的活動模式,一個基站覆蓋的區(qū)域可等價于商圈,通過歸納經(jīng)過基站覆蓋范圍的人口特征,識別出不同類別的基站范圍,即可等同地識別出不同類別的商圈。衡量區(qū)域的人口特征可從人流量和人均停留時間的角度進行分析,所以在歸納基站特征時可針對這兩個特點進行提取。
總體流程:
1.數(shù)據(jù)探索分析
EMASI號為55555的用戶在2014年1月1日的定位數(shù)據(jù)
2.數(shù)據(jù)預(yù)處理
數(shù)據(jù)規(guī)約
- 網(wǎng)絡(luò)類型、LOC編號和信令類型這三個屬性對于挖掘目標(biāo)沒有用處,故剔除這三個冗余的屬性。而衡量用戶的停留時間并不需要精確到毫秒級,故可把毫秒這一屬性刪除。
- 把年、月和日合并記為日期,時、分和秒合并記為時間。
import numpy as np
import pandas as pd
data=pd.read_excel(‘C://Python//DataAndCode//chapter14//demo//data//business_circle.xls’)
# print(data.head())
#刪除三個冗余屬性
del data[[‘網(wǎng)絡(luò)類型’,‘LOC編號’,‘信令類型’]]
#合并年月日
periods=pd.PeriodIndex(year=data['年'],month=data['月'],day=data['日'],freq='D')
data['日期']=periods
time=pd.PeriodIndex(hour=data['時'],minutes=data['分'],seconds=data['秒'],freq='D')
data['時間']=time
data['日期']=pd.to_datetime(data['日期'],format='%Y/%m/%d')
data['時間']=pd.to_datetime(data['時間'],format='%H/%M/%S')
數(shù)據(jù)變換
假設(shè)原始數(shù)據(jù)所有用戶在觀測窗口期間L( 天)曾經(jīng)經(jīng)過的基站有 N個,用戶有 M個,用戶 i在 j天在 num1 基站的工作日上班時間停留時間為
weekday_num1,在 num1 基站的凌晨停留時間為night_num1 ,在num1基站的周末停留時間為weekend_num1, 在
num1基站是否停留為 stay_num1 ,設(shè)計基站覆蓋范圍區(qū)域的人流特征:
由于各個屬性的之間的差異較大,為了消除數(shù)量級數(shù)據(jù)帶來的影響,在進行聚類前,需要進行離差標(biāo)準(zhǔn)化處理。
#- _\- coding: utf-8 -_ -
#數(shù)據(jù)標(biāo)準(zhǔn)化到[0,1]
import pandas as pd
#參數(shù)初始化
filename = ‘…/data/business_circle.xls’ #原始數(shù)據(jù)文件
standardizedfile = ‘…/tmp/standardized.xls’ #標(biāo)準(zhǔn)化后數(shù)據(jù)保存路徑
data = pd.read_excel(filename, index_col = u'基站編號') #讀取數(shù)據(jù)
data = (data - data.min())/(data.max() - data.min()) #離差標(biāo)準(zhǔn)化
data = data.reset_index()
data.to_excel(standardizedfile, index = False) #保存結(jié)果
3.構(gòu)建模型
構(gòu)建商圈聚類模型
采用層次聚類算法對建模數(shù)據(jù)進行基于基站數(shù)據(jù)的商圈聚類,畫出譜系聚類圖。從圖可見,可把聚類類別數(shù)取3類。
#- _\- coding: utf-8 -_ -
#譜系聚類圖
import pandas as pd
#參數(shù)初始化
standardizedfile = ‘…/data/standardized.xls’ #標(biāo)準(zhǔn)化后的數(shù)據(jù)文件
data = pd.read_excel(standardizedfile, index_col = u’基站編號’) #讀取數(shù)據(jù)
```python
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage,dendrogram
#這里使用scipy的層次聚類函數(shù)
Z = linkage(data, method = 'ward', metric = 'euclidean') #譜系聚類圖
P = dendrogram(Z, 0) #畫譜系聚類圖
plt.show()
```
模型分析
針對聚類結(jié)果按不同類別畫出4個特征的折線圖。
#- _\- coding: utf-8 -_ -
#層次聚類算法
import pandas as pd
#參數(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 plt
plt.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 = '../tmp/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)) #保存圖片
對于商圈類別1,日均人流量較大,同時工作日上班時間人均停留時間、凌晨人均停留時間和周末人均停留時間相對較短,該類別基站覆蓋的區(qū)域類似于商業(yè)區(qū)
對于商圈類別2,凌晨人均停留時間和周末人均停留時間相對較長,而工作日上班時間人均停留時間較短,日均人流量較少,該類別基站覆蓋的區(qū)域類似于住宅區(qū)。
對于商圈類別3,這部分基站覆蓋范圍的工作日上班時間人均停留時間較長,同時凌晨人均停留時間、周末人均停留時間相對較短,該類別基站覆蓋的區(qū)域類似于白領(lǐng)上班族的工作區(qū)域。
總結(jié)
商圈類別2的人流量較少,商圈類別3的人流量一般,而且白領(lǐng)上班族的工作區(qū)域一般的人員流動集中在上下班時間和午間吃飯時間,這兩類商圈均不利于運營商的促銷活動的開展,商圈類別1的人流量大,在這樣的商業(yè)區(qū)有利于進行運營商的促銷活動。
最后
?? 更多資料, 項目分享:
https://gitee.com/dancheng-senior/postgraduate
到了這里,關(guān)于競賽保研 大數(shù)據(jù)商城人流數(shù)據(jù)分析與可視化 - python 大數(shù)據(jù)分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!