資料分析實踐 客戶流失判斷 資料建模

2021-10-08 16:24:51 字數 3037 閱讀 5580

劃分資料集

前一篇介紹到資料集是不平衡資料集,這裡採用k折交叉驗證方法進行處理

# 劃分訓練集和驗證集

x = data_dummy.drop(

'label'

,axis=1)

y = train[

'label'].

map(

)x_train,x_valid,y_train,y_valid=train_test_split(x,y,test_size=

0.2)

sklearn庫匯入模型

# 匯入模型

from sklearn.linear_model import logisticregression # 邏輯回歸

from sklearn.neighbors import kneighborsclassifier # k近鄰

from sklearn.svm import svc # 支援向量機

from sklearn.tree import decisiontreeclassifier # 決策樹

from sklearn.ensemble import randomforestclassifier # 隨機森林

from sklearn.ensemble import adaboostclassifier # adaboost

from xgboost.sklearn import xgbclassifier # xgboost

from lightgbm.sklearn import lgbmclassifier # lightgbm

構建模型

這裡有借鑑別人的編碼1

2

from sklearn.model_selection import gridsearchcv

from sklearn.model_selection import stratifiedkfold,kfold

from sklearn.pipeline import pipeline

from sklearn.preprocessing import minmaxscaler

defcheck_model

(x_train,y_train,clf,clf_name,parameters,k_fold,metrics=

'accuracy'):

# 管道機制使得引數集在新資料集(比如測試集)上的重複使用,管道機制實現了對全部步驟的流式化封裝和管理。

pipeline = pipeline([(

'scaler'

,minmaxscaler())

,(clf_name,clf)])

# k折取樣

#folder = kfold(n_splits=k_fold, shuffle=true)

# 分層k折取樣

folder = stratifiedkfold(n_splits=k_fold, shuffle=

true

)

grid_search = gridsearchcv(estimator=pipeline,

param_grid=parameters,

cv=folder,

scoring=metrics)

gs=grid_search.fit(x_train,y_train)

print

('gridsearch 最優引數:{},最優分數:{}'

.format

(gs.best_params_,gs.best_score_)

)return gs

訓練模型

在對多個模型實驗後,發現決策樹和xgboost、lightgbm的效果更好,這裡以lightgbm舉例訓練模型:

# lightgbm

num_folds=

7lgb = lgbmclassifier(

)lgb_parameters =

lgb_model = check_model(x_train,y_train,lgb,

'lgb'

,lgb_parameters,num_folds)

y_pred = lgb_model.predict(x_valid)

print

(accuracy_score(y_pred,y_valid)

)

模型**

def

testpredict

(testdf,clf,clfname)

: submission=testdf.drop(

['id'

,'seniorcitizen'

,'gender'

,'phoneservice'

,'multiplelines'

],axis=1)

submission_dummy=pd.get_dummies(submission)

preds=clf.predict(submission_dummy)

# **

preddf=pd.dataframe(

) preddf[

'id'

]=testdf[

'id'

] preddf[

'label'

]=pd.series(preds)

.map()

output=clfname+

'_results.csv'

preddf.to_csv(output,index=

false

)# 儲存為csv檔案

testpredict(test,lgb_model,

'lgb'

)

kaggle案例↩︎

知乎↩︎

py資料分析學習日誌 電信客戶流失資料

注意 原文使用的pandas為0.17版本之前,在新版的pd一部分函式已被棄用或改寫,以下 已修改 seniorcitizen 老年人 partner 配偶 dependents 家屬 renure 職位 multiplelines 網際網路服務 sreamingtv 額 contract 合同 l...

小白學資料分析 流失分析設計

前段時間說過一些關於玩家生命週期的問題,其實那些有點大,有點虛,從巨集觀的角度了解我們此時此刻正在做的分析是屬於那一部分,哪乙個體系的,說實話,這是為了建立一種意識而要做的工作,玩家生命週期價值源於電信行業的客戶生命週期管理和plc 產品生命週期 的解讀和應用,限於本人水平和能力因素,不夠深刻,全面...

基於資料探勘的客戶流失分析案例

客戶挽留在很多行業都是乙個備受關注的問題,比如電信 銀行 保險 零售等。要做客戶挽留就需要對客戶流失進行預警 客戶流失原因分析 客戶滿意度或忠誠度研究 客戶生命週期研究等相關問題進行深入而全面的分析。例如,對客戶的行為特徵進行分析,可以了解有多少客戶流失,客戶是什麼時候流失的,以及客戶是如何流失的等...