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