大數(shù)據(jù)通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)課件_第1頁(yè)
大數(shù)據(jù)通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)課件_第2頁(yè)
大數(shù)據(jù)通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)課件_第3頁(yè)
大數(shù)據(jù)通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)課件_第4頁(yè)
大數(shù)據(jù)通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)課件_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)1數(shù)據(jù)準(zhǔn)備目錄通信運(yùn)營(yíng)商客戶流失分析需求2特征工程3使用多層感知器算法實(shí)現(xiàn)通信運(yùn)營(yíng)商客戶流失預(yù)測(cè)4小結(jié)5隨著業(yè)務(wù)的快速發(fā)展、移動(dòng)業(yè)務(wù)市場(chǎng)的競(jìng)爭(zhēng)愈演愈烈。如何最大程度地挽留在網(wǎng)用戶、吸取新客戶,是電信企業(yè)最關(guān)注的問(wèn)題之一。競(jìng)爭(zhēng)對(duì)手的促銷(xiāo)、公司資費(fèi)軟著陸措施的出臺(tái)和政策法規(guī)的不斷變化,影響了客戶消費(fèi)心理和消費(fèi)行為,導(dǎo)致客戶的流失特征不斷變化。對(duì)于電信運(yùn)營(yíng)商而言,流失會(huì)給電信企業(yè)帶來(lái)市場(chǎng)占有率下降、營(yíng)銷(xiāo)成本增加、利潤(rùn)下降等一系列問(wèn)題。在發(fā)展用戶每月增加的同時(shí),如何挽留和爭(zhēng)取更多的用戶,是一項(xiàng)非常重要的工作。隨著機(jī)器學(xué)習(xí)技術(shù)的不斷發(fā)展和應(yīng)用,移動(dòng)運(yùn)營(yíng)商希望能借助機(jī)器學(xué)習(xí)算法

2、識(shí)別哪些用戶可能流失,什么時(shí)候會(huì)發(fā)生流失。而通過(guò)建立流失預(yù)測(cè)模型,分析用戶的歷史數(shù)據(jù)和當(dāng)前數(shù)據(jù),提取輔助決策的關(guān)鍵性數(shù)據(jù),并從中發(fā)現(xiàn)隱藏關(guān)系和模式,進(jìn)而預(yù)測(cè)未來(lái)可能發(fā)生的行為,就可以幫助移動(dòng)運(yùn)營(yíng)商實(shí)現(xiàn)這些要求。通信運(yùn)營(yíng)商現(xiàn)狀與需求某運(yùn)營(yíng)商提供了不同用戶的三個(gè)月使用記錄共900000條數(shù)據(jù),共34個(gè)特征,其中存在著重復(fù)值,缺失值與異常值,其字段說(shuō)明如下表所示。通信運(yùn)營(yíng)商數(shù)據(jù)基本狀況名稱字段描述MONTH_ID月份USER_ID用戶IDINNET_MONTH在網(wǎng)時(shí)長(zhǎng)IS_AGREE是否合約有效用戶AGREE_EXP_DATE合約計(jì)劃到期時(shí)間CREDIT_LEVEL信用等級(jí)VIP_LVLVIP等級(jí)A

3、CCT_FEE本月費(fèi)用(元)通信運(yùn)營(yíng)商數(shù)據(jù)基本狀況名稱字段描述CALL_DURA通話時(shí)長(zhǎng)(秒)NO_ROAM_LOCAL_CALL_DURA本地通話時(shí)長(zhǎng)(秒)NO_ROAM_GN_LONG_CALL_DURA國(guó)內(nèi)長(zhǎng)途通話時(shí)長(zhǎng)(秒)GN_ROAM_CALL_DURA國(guó)內(nèi)漫游通話時(shí)長(zhǎng)(秒)CDR_NUM通話次數(shù)(次)NO_ROAM_CDR_NUM非漫游通話次數(shù)(次)NO_ROAM_LOCAL_CDR_NUM本地通話次數(shù)(次)NO_ROAM_GN_LONG_CDR_NUM國(guó)內(nèi)長(zhǎng)途通話次數(shù)(次)GN_ROAM_CDR_NUM國(guó)內(nèi)漫游通話次數(shù)(次)P2P_SMS_CNT_UP短信發(fā)送數(shù)(條)TOTAL_

4、FLUX上網(wǎng)流量(MB)LOCAL_FLUX本地非漫游上網(wǎng)流量(MB)GN_ROAM_FLUX國(guó)內(nèi)漫游上網(wǎng)流量(MB)CALL_DAYS有通話天數(shù)通信運(yùn)營(yíng)商數(shù)據(jù)基本狀況名稱字段描述CALLING_DAYS有主叫天數(shù)CALLED_DAYS有被叫天數(shù)CALL_RING語(yǔ)音呼叫圈CALLING_RING主叫呼叫圈CALLED_RING被叫呼叫圈CUST_SEX性別CERT_AGE年齡CONSTELLATION_DESC星座MANU_NAME手機(jī)品牌名稱MODEL_NAME手機(jī)型號(hào)名稱OS_DESC操作系統(tǒng)描述TERM_TYPE終端硬件類(lèi)型(0=無(wú)法區(qū)分,4=4g、3=3g、2=2g)IS_LOST用

5、戶在3月是否流失標(biāo)記(1=是,0=否),1月和2月值為空通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)的總體流程如下圖所示,具體步驟如下。通信運(yùn)營(yíng)商客戶流失分析與預(yù)測(cè)的步驟與流程導(dǎo)入原始數(shù)據(jù),查找并刪除完全重復(fù)的數(shù)據(jù)。剔除與預(yù)測(cè)相關(guān)性不強(qiáng)的特征,降低維數(shù)。對(duì)整理后的數(shù)據(jù)集進(jìn)行清洗,查找缺失值和異常值,對(duì)存在缺失的數(shù)據(jù)按照一定的規(guī)則賦值,刪除異常數(shù)據(jù)。合并用戶的基本信息特征,將3個(gè)月的記錄合并為一條。簡(jiǎn)化手機(jī)品牌和操作系統(tǒng)特征,并進(jìn)行獨(dú)熱編碼便于構(gòu)建模型。將合并后的數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,并對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。基于訓(xùn)練集構(gòu)建客戶流失預(yù)測(cè)模型。在測(cè)試集上應(yīng)用客戶流失預(yù)測(cè)模型,并對(duì)預(yù)測(cè)結(jié)果進(jìn)行評(píng)價(jià)餐飲企業(yè)數(shù)據(jù)分

6、析的步驟與流程1數(shù)據(jù)準(zhǔn)備目錄通信運(yùn)營(yíng)商客戶流失分析需求2特征工程3使用多層感知器算法實(shí)現(xiàn)通信運(yùn)營(yíng)商客戶流失預(yù)測(cè)4小結(jié)5原始數(shù)據(jù)中存在一部分重復(fù)記錄,刪除這部分重復(fù)記錄,并查找原始數(shù)據(jù)中是否存在重復(fù)的特征,如下代碼所示。數(shù)據(jù)去重與降維In1:import osimport pandas as pd# 讀取數(shù)據(jù)文件data = pd.read_csv(./data/USER_INFO_M.csv, index_col=0,encoding = gbk)print(原始數(shù)據(jù)形狀為:,data.shape)Out1:原始數(shù)據(jù)形狀為: (900000, 34)In2:# 去除重復(fù)記錄data_drop

7、= pd.DataFrame.drop_duplicates(data,subset=None,keep=first,inplace=False)print(刪除重復(fù)記錄后的數(shù)據(jù)形狀為:,data_drop.shape)Out2:刪除重復(fù)記錄后的數(shù)據(jù)形狀為: (899904, 34)數(shù)據(jù)去重與降維In3:# 查找是否有重復(fù)特征# 定義求取特征是否完全相同的矩陣的函數(shù)def FeatureEquals(df): dfEquals=pd.DataFrame(,columns=df.columns,index=df.columns) for i in df.columns: for j in df.

8、columns: dfEquals.loci,j=df.loc:,i.equals(df.loc:,j) return dfEqualsdetEquals=FeatureEquals(data_drop) # 應(yīng)用FeatureEquals函數(shù)# 遍歷所有數(shù)據(jù)lenDet = detEquals.shape0dupCol = for k in range(lenDet): for l in range(k+1,lenDet): if detEquals.ilock,l & (detEquals.columnsl not in dupCol): dupCol.append(detEquals.c

9、olumnsl)# 刪除重復(fù)列data_drop.drop(dupCol,axis=1,inplace=True)print(刪除重復(fù)列后的數(shù)據(jù)形狀:,data_drop.shape) Out3:刪除重復(fù)列后的數(shù)據(jù)形狀: (899904, 34)原始數(shù)據(jù)中的用戶性別、年齡和星座等信息與用戶流失預(yù)測(cè)相關(guān)性很小。因此,可以對(duì)原數(shù)據(jù)集進(jìn)行降維處理,如下代碼所示。數(shù)據(jù)去重與降維In4:# 數(shù)據(jù)降維del data_dropMODEL_NAME # 手機(jī)型號(hào)del data_dropAGREE_EXP_DATE # 刪除合約是否到期del data_dropCUST_SEX # 性別del data_d

10、ropCONSTELLATION_DESC # 星座del data_dropCERT_AGE # 年齡print(降維后的數(shù)據(jù)形狀為:, data_drop.shape)Out4:降維后的數(shù)據(jù)形狀為: (899904, 29)檢測(cè)數(shù)據(jù)中是否存在的缺失值,如下代碼所示。數(shù)據(jù)清洗1. 缺失值處理In5:# 統(tǒng)計(jì)各個(gè)特征的缺失率naRate = (data_drop.isnull().sum()/data_drop.shape0*100).astype(str)+%print(data每個(gè)特征缺失的率為:n,naRate)Out5:data每個(gè)特征缺失的率為: USER_ID 0.0%INNET_

11、MONTH 0.0%IS_AGREE 0.0%CREDIT_LEVEL 0.0%OS_DESC 4.243230389019273%TERM_TYPE 0.0%IS_LOST 66.63633009743262%dtype: object)由上代碼可知,其中IS_LOST為客戶是否流失的標(biāo)簽字段不需要進(jìn)行插補(bǔ),而VIP等級(jí)(VIP_LVL)和操作系統(tǒng)(OS_DESC)的缺失值較多,需要進(jìn)行插補(bǔ),如下代碼所示。數(shù)據(jù)清洗1. 缺失值處理In6:# VIP等級(jí)為nan的補(bǔ)0data_dropVIP_LVL = data_dropVIP_LVL.fillna(0)# 操作系統(tǒng)缺失的 填補(bǔ)ANDROID

12、data_dropOS_DESC = data_dropOS_DESC.fillna(ANDROID)print(處理缺失值后數(shù)據(jù)集的形狀為:,data_drop.shape) Out6:處理缺失值后數(shù)據(jù)集的形狀為: (899904, 29)對(duì)數(shù)據(jù)集中的每一列進(jìn)行統(tǒng)計(jì)分析,查看是否存在異常值,如下代碼所示。數(shù)據(jù)清洗2. 異常值處理In6:# 對(duì)列統(tǒng)計(jì)分析data_drop.describe()Out6: INNET_MONTH IS_AGREE CREDIT_LEVEL VIP_LVL ACCT_FEE count899904.000000899904.000000899904.0000008

13、99904.000000899904.000000mean34.5079150.51039366.01682652.388983118.595064 std34.2320390.4998920.95860748.936066167.792836 min-251.0000000.0000000.0000000.0000000.010000 25%10.0000000.00000065.0000000.00000054.850000 50%24.0000001.00000066.00000099.00000086.000000 75%49.0000001.00000067.00000099.000

14、000143.580000 max249.0000001.00000067.00000099.00000065007.210000 由上代碼可知,在網(wǎng)時(shí)長(zhǎng)(INNET_MONTH)出現(xiàn)小于0的異常值,本月費(fèi)用(ACCT_FEE)出現(xiàn)大于40000的異常值,需要對(duì)這部分異常數(shù)據(jù)進(jìn)行刪除處理,如下代碼所示。數(shù)據(jù)清洗2. 異常值處理In8:# 刪除異常數(shù)據(jù)data_drop = data_dropdata_dropINNET_MONTH = 0data_drop = data_dropdata_dropACCT_FEE 400000print(處理異常值后數(shù)據(jù)集的形狀為:,data_drop.sha

15、pe)data_drop.to_csv(./tmp/data_drop.csv, encoding=utf8)Out8:處理異常值后數(shù)據(jù)集的形狀為: (899901, 29)將數(shù)據(jù)按照用戶ID分組,求出每個(gè)用戶的費(fèi)用、通話時(shí)長(zhǎng)等基本特征三個(gè)月內(nèi)的中位數(shù)和方差,如下代碼所示。數(shù)據(jù)合并1. 分組計(jì)算用戶基本特征的中位數(shù)和方差I(lǐng)n1:import osimport pandas as pdimport numpy as npdata_drop = pd.read_csv(./tmp/data_drop.csv, encoding=utf8)data_group = data_drop.groupby

16、(USER_ID).agg(ACCT_FEE:np.median,np.var, CALL_DURA:np.median,np.var, CDR_NUM:np.median,np.var, NO_ROAM_LOCAL_CALL_DURA:np.median,np.var, NO_ROAM_LOCAL_CDR_NUM:np.median,np.var, NO_ROAM_GN_LONG_CALL_DURA:np.median,np.var, NO_ROAM_GN_LONG_CDR_NUM:np.median,np.var, GN_ROAM_CALL_DURA:np.median,np.var, G

17、N_ROAM_CDR_NUM:np.median,np.var, NO_ROAM_CDR_NUM:np.median,np.var,數(shù)據(jù)合并1. 分組計(jì)算用戶基本特征的中位數(shù)和方差I(lǐng)n1: P2P_SMS_CNT_UP:np.median,np.var, TOTAL_FLUX:np.median,np.var, LOCAL_FLUX:np.median,np.var, GN_ROAM_FLUX:np.median,np.var, CALL_DAYS:np.median,np.var, CALLING_DAYS:np.median,np.var, CALLED_DAYS:np.median,np

18、.var, CALL_RING:np.median,np.var, CALLING_RING:np.median,np.var, CALLED_RING:np.median,np.var, INNET_MONTH:np.median,np.var,)print(data_group的形狀為:,data_group.shape)data_group.to_csv(./tmp/data_group.csv, encoding=utf8)Out1:data_group的形狀為: (299967, 42)數(shù)據(jù)合并2. 合并合約有效情況In2:# 將每個(gè)用戶三個(gè)月的合約是否有效,合并為一條記錄# 定義合

19、并合約有效記錄函數(shù)def fun1(data): if data.shape0 != 3: return 0 elif sum(data.iloc:,1 = 1) = 3: return 1.5 else: return data.iloc-1,1 - data.iloc:2,1.mean()data_agree = data_dropUSER_ID, IS_AGREE.groupby(USER_ID).apply(lambda x:fun1(x)print(data_agree的形狀為:,data_agree.shape)print(data_agree.head()data_agree.t

20、o_csv(./tmp/data_agree.csv, encoding=utf8)將三個(gè)月的合約有效情況合并為一條記錄。當(dāng)三個(gè)月的合約有效情況取值不全為1時(shí),用第三個(gè)月的值減去前兩個(gè)月的均值;當(dāng)三個(gè)月的取值都是1時(shí),取1.5。最后得到的所有合約有效情況的取值將為-1、-0.5、0、0.5、1、1.5,如下代碼所示。數(shù)據(jù)合并2. 合并合約有效情況Out2:data_agree的形狀為: (299967,)USER_IDU3114031824148707 0.0U3114031824148874 1.5U3114031824148975 1.5U3114031824149138 0.0U3114

21、031824149150 0.0dtype: float64數(shù)據(jù)合并3. 合并VIP等級(jí)In3:# 將每個(gè)用戶三個(gè)月的VIP等級(jí)合并為一條記錄def fun2(data): if data.shape0 != 3: return 0 elif(data.iloc0,1=data.iloc1,1)&(data.iloc0,1=data.iloc2,1): return data.iloc2,1 else: return data.iloc2,1 - data.iloc:2,1.mean()data_vip = data_dropUSER_ID, VIP_LVL.groupby(USER_ID).

22、apply(lambda x:fun2(x)print(data_vip的形狀為:,data_vip.shape)print(data_vip.head()data_vip.to_csv(./tmp/data_vip.csv, encoding=utf8)按用戶ID分組,對(duì)于同一個(gè)用戶ID,三個(gè)月VIP等級(jí)的值相等,則取第三個(gè)月的值;三個(gè)月VIP等級(jí)的值都不相等,則使用第三個(gè)月的值減去前兩個(gè)月的均值。這樣處理就可以突出用戶在三個(gè)月內(nèi)的VIP等級(jí)的變化情況,如下代碼所示。數(shù)據(jù)合并3. 合并VIP等級(jí)Out3:data_vip的形狀為: (299967,)USER_IDU3114031824148

23、707 99.0U3114031824148874 99.0U3114031824148975 99.0U3114031824149138 99.0U3114031824149150 99.0dtype: float64數(shù)據(jù)合并4. 合并信用等級(jí)In4:# 取每個(gè)用戶三個(gè)月信用等級(jí)的平均數(shù)作為一行記錄data_credit = data_drop.groupby(USER_ID).agg(CREDIT_LEVEL:np.mean,)data_credit.iloc:10print(data_credit的形狀為:,data_credit.shape)print(data_credit.head

24、()data_credit.to_csv(./tmp/data_credit.csv,encoding=utf8)Out4:data_credit的形狀為: (299967, 1)USER_IDCREDIT_LEVELU311403182414870767.0U311403182414887465.0U311403182414897565.0U311403182414913865.0U311403182414915065.0按用戶ID分組,將每個(gè)用戶3個(gè)月的信用等級(jí)求平均值,合并為一條記錄,如下代碼所示。數(shù)據(jù)合并4. 合并信用等級(jí)In5:# 簡(jiǎn)化手機(jī)品牌string = 蘋(píng)果,小米,華為,三星

25、,諾基亞,聯(lián)想,LGdef Replace(x=None,string=string): if x not in string: x=其他 return x# 每個(gè)ID的手機(jī)品牌只取第一個(gè)月的data_str = data_drop.groupby(USER_ID).apply(lambda x:x.iloc0)data_manu = data_strMANU_NAME.apply(Replace)print(data_manu的形狀為:, data_manu.shape)print(data_manu.head()將手機(jī)品牌簡(jiǎn)化為“蘋(píng)果”“小米”“華為”“三星”“諾基亞”“聯(lián)想”“LG”和“

26、其他”8種,將操作系統(tǒng)簡(jiǎn)化為“ANDROID”“IOS”“WINDOWS”“LINUX”“BLACKBERRY”“BADA”和“BB”7種,如下代碼所示。數(shù)據(jù)合并4. 合并信用等級(jí)Out5:data_manu的形狀為: (299967,)USER_IDU3114031824148707 蘋(píng)果U3114031824148874 蘋(píng)果U3114031824148975 蘋(píng)果U3114031824149138 蘋(píng)果U3114031824149150 三星Name: MANU_NAME, dtype: objectIn5:# 簡(jiǎn)化操作系統(tǒng)# 每個(gè)ID的手機(jī)操作系統(tǒng)也只取第一個(gè)月的data_id = d

27、ata_drop.groupby(USER_ID).apply(lambda x:x.iloc0)data_os = data_idOS_DESC.str.extract(A-Z+) # 保留所有的字母print(data_os的形狀為:, data_os.shape)print(data_os.head()數(shù)據(jù)合并4. 合并信用等級(jí)Out5:data_os的形狀為: (299967, 1)0USER_IDU3114031824148707IOSU3114031824148874IOSU3114031824148975IOSU3114031824149138IOSU31140318241491

28、50ANDROID1數(shù)據(jù)準(zhǔn)備目錄通信運(yùn)營(yíng)商客戶流失分析需求2特征工程3使用多層感知器算法實(shí)現(xiàn)通信運(yùn)營(yíng)商客戶流失預(yù)測(cè)4小結(jié)5因?yàn)槭謾C(jī)品牌和手機(jī)操作系統(tǒng)都是非數(shù)值型的數(shù)據(jù),而算法模型都要求輸入的特征為數(shù)值型。因此,需要對(duì)非數(shù)值型的數(shù)據(jù)進(jìn)行獨(dú)熱編碼,如下代碼所示。獨(dú)熱編碼In6:# 手機(jī)品牌獨(dú)熱編碼data_manu = pd.get_dummies(data_manu)print(獨(dú)熱編碼后的手機(jī)品牌的形狀:, data_manu.shape)print(data_manu.head()data_manu.to_csv(./tmp/data_manu.csv, encoding=utf8)獨(dú)熱編碼

29、Out6:獨(dú)熱編碼后的手機(jī)品牌的形狀: (299967, 8)USER_IDLG三星其他華為小米聯(lián)想蘋(píng)果諾基亞U311403182414870700000010U311403182414887400000010U311403182414897500000010U311403182414913800000010U311403182414915001000000In7:# 操作系統(tǒng)獨(dú)熱編碼data_os = pd.get_dummies(data_os)print(獨(dú)熱編碼后的操作系統(tǒng)的形狀:, data_os.shape)print(data_os.head()data_os.to_csv(./

30、tmp/data_os.csv, encoding=utf8)獨(dú)熱編碼Out7:獨(dú)熱編碼后的操作系統(tǒng)的形狀: (299967, 7)USER_ID0_ANDROID0_BADA0_BB0_BLACKBERRY0_IOS0_LINUX0_WINDOWSU31140318241487070000100U31140318241488740000100U31140318241489750000100U31140318241491380000100U31140318241491501000000將預(yù)處理完畢的數(shù)據(jù)集進(jìn)行合并,保證待合并的數(shù)據(jù)框行數(shù)一致的情況下,從左往右逐一合并,并為合并后的新數(shù)據(jù)框重新賦

31、列名,如下代碼所示。合并預(yù)處理后的數(shù)據(jù)集In8:print(data_drop的形狀:, data_drop.shape)print( data_group的形狀:, data_group.shape)print( data_agree的形狀:, data_agree.shape)print( data_vip的形狀:, data_vip.shape)print( data_credit的形狀:, data_credit.shape)print( data_manu的形狀:, data_manu.shape)print( data_os的形狀:, data_os.shape)Out8:data

32、_drop的形狀: (899901, 30)data_group的形狀: (299967, 42)data_agree的形狀: (299967,)data_vip的形狀: (299967,)data_credit的形狀: (299967, 1)data_manu的形狀: (299967, 8)data_os的形狀: (299967, 7)合并預(yù)處理后的數(shù)據(jù)集In8:data_preprocessed = pd.concat(pd.DataFrame(data_group),pd.DataFrame(data_agree), pd.DataFrame(data_vip),pd.DataFrame

33、(data_credit), pd.DataFrame(data_manu),pd.DataFrame(data_os), axis=1)print(合并后數(shù)據(jù)集的形狀為:, data_preprocessed.shape)data_preprocessed.columns = ACCT_FEE_median,ACCT_FEE_var, CALL_DURA_median,CALL_DURA_var, CDR_NUM_median,CDR_NUM_var, NO_ROAM_LOCAL_CALL_DURA_median, NO_ROAM_LOCAL_CALL_DURA_var, NO_ROAM_L

34、OCAL_CDR_NUM_median, NO_ROAM_LOCAL_CDR_NUM_var, NO_ROAM_GN_LONG_CALL_DURA_median, NO_ROAM_GN_LONG_CALL_DURA_var, NO_ROAM_GN_LONG_CDR_NUM_median, NO_ROAM_GN_LONG_CDR_NUM_var,合并預(yù)處理后的數(shù)據(jù)集In8: GN_ROAM_CALL_DURA_median, GN_ROAM_CALL_DURA_var, GN_ROAM_CDR_NUM_median, GN_ROAM_CDR_NUM_var, NO_ROAM_CDR_NUM_me

35、dian, NO_ROAM_CDR_NUM_var, P2P_SMS_CNT_UP_median, P2P_SMS_CNT_UP_var, TOTAL_FLUX_median,TOTAL_FLUX_var, LOCAL_FLUX_median,LOCAL_FLUX_var, GN_ROAM_FLUX_median,GN_ROAM_FLUX_var, CALL_DAYS_median,CALL_DAYS_var,合并預(yù)處理后的數(shù)據(jù)集In8: CALLING_DAYS_median,CALLING_DAYS_var, CALLED_DAYS_median,CALLED_DAYS_var, CALL

36、_RING_median,CALL_RING_var, CALLING_RING_median,CALLING_RING_var, CALLED_RING_median,CALLED_RING_var, INNET_MONTH_median,INNET_MONTH_var, IS_AGREE,VIP_LVL,CREDIT_LEVEL, LG,三星,其他,華為,小米, 聯(lián)想,蘋(píng)果,諾基亞, 0_ANDROID,0_BADA,0_BB,0_BLACKBERRY, 0_IOS,0_LINUX,0_WINDOWSprint(data_preprocessed.head()data_preprocess

37、ed.to_csv(./tmp/data_preprocessed.csv, encoding=utf8)合并預(yù)處理后的數(shù)據(jù)集Out9:合并后數(shù)據(jù)集的形狀為: (299967, 60)USER_IDACCT_FEE_medianACCT_FEE_varCALL_DURA_median U311403182414870776.027.90750011901 U3114031824148874260.32889.99863322991 U3114031824148975166.00.00333318972 U3114031824149138146.22150.29750042921 U311403

38、182414915077.348.8233331206 5 rows 60 columns1數(shù)據(jù)準(zhǔn)備目錄通信運(yùn)營(yíng)商客戶流失分析需求2特征工程3使用多層感知器算法實(shí)現(xiàn)通信運(yùn)營(yíng)商客戶流失預(yù)測(cè)4小結(jié)5在預(yù)處理完后的數(shù)據(jù)集中,隨機(jī)抽取80%的數(shù)據(jù)作為訓(xùn)練集,20%的建模數(shù)據(jù)集作為測(cè)試集。為了消除各特征之間量綱和取值范圍的差異,還需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,如下代碼所示。數(shù)據(jù)集劃分與數(shù)據(jù)標(biāo)準(zhǔn)化In1:#導(dǎo)入庫(kù)import osimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.preproc

39、essing import StandardScalerfrom sklearn.neural_network import MLPClassifierfrom sklearn.metrics import classification_report# 導(dǎo)入數(shù)據(jù)data_drop = pd.read_csv(./tmp/data_drop.csv,encoding = utf-8,index_col = 0 )data_preprocessed = pd.read_csv(./tmp/data_preprocessed.csv,encoding = utf-8, index_col = 0 )

40、數(shù)據(jù)集劃分與數(shù)據(jù)標(biāo)準(zhǔn)化In1:# 取data_preprocessed作為輸入,取data_drop中三月份的數(shù)據(jù)的目標(biāo)變量作為輸出data_target = data_drop.loc:,USER_ID,IS_LOSTdata_target = data_target.locdata_targetUSER_ID.isin(data_preprocessed.index)data_target = data_target.loc201603.drop_duplicates()print(目標(biāo)變量數(shù)據(jù)集的形狀為:,data_target.shape)Out1:目標(biāo)變量數(shù)據(jù)集的形狀為: (2999

41、67, 2)In2:# 劃分?jǐn)?shù)據(jù)集x = data_preprocessedy = data_targetx_train, x_test,y_train, y_test = train_test_split(x, yIS_LOST, test_size=0.2, random_state=42)print(訓(xùn)練集數(shù)據(jù)的形狀為:,x_train.shape)print(訓(xùn)練集標(biāo)簽的形狀為:,y_train.shape)print(測(cè)試集數(shù)據(jù)的形狀為:,x_test.shape)print(測(cè)試集標(biāo)簽的形狀為:,y_test.shape)數(shù)據(jù)集劃分與數(shù)據(jù)標(biāo)準(zhǔn)化Out2:訓(xùn)練集數(shù)據(jù)的形狀為: (23

42、9973, 60)訓(xùn)練集標(biāo)簽的形狀為: (239973,)測(cè)試集數(shù)據(jù)的形狀為: (59994, 60)測(cè)試集標(biāo)簽的形狀為: (59994,)In3:# 數(shù)據(jù)標(biāo)準(zhǔn)化stdScaler = StandardScaler().fit(x_train)x_stdtrain = stdScaler.transform(x_train)x_stdtest = stdScaler.transform(x_test)print(標(biāo)準(zhǔn)化后的x_stdtrain:n,x_stdtrain)print(標(biāo)準(zhǔn)化后的x_stdtest:n,x_stdtest)數(shù)據(jù)集劃分與數(shù)據(jù)標(biāo)準(zhǔn)化Out3:標(biāo)準(zhǔn)化后的x_stdtrai

43、n: 3.60085096e+00 1.62976772e-01 1.80357715e+00 . 1.03237316e+00 -2.04136054e-03 -6.40026339e-02 . -3.13896190e-01 -4.02014279e-03 4.95623880e-01 . 1.03237316e+00 -2.04136054e-03 -6.40026339e-02標(biāo)準(zhǔn)化后的x_stdtest: -1.89615756e-01 -3.98502466e-03 4.28483334e+00 . 1.03237316e+00 -2.04136054e-03 -6.4002633

44、9e-02. 1.23824687e-01 -3.49158199e-03 6.59684018e-01 . -9.68641996e-01 -2.04136054e-03 -6.40026339e-02使用多層感知器算法構(gòu)建用戶流失模型。輸入層為用戶基本信息和呼叫信息的指標(biāo)變量,輸出層為用戶在3個(gè)月內(nèi)是否流失的指標(biāo),如下代碼所示。構(gòu)建客戶流失預(yù)測(cè)模型In4:# 建立模型bpnn = MLPClassifier(hidden_layer_sizes=(17,10), max_iter = 200,solver= lbfgs,random_state=50)bpnn.fit(x_stdtrain,y_train)print(構(gòu)建的模型為:n,bpnn)Out4:構(gòu)建的模型為: MLPCla

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論