劃分資料集
前一篇介紹到資料集是不平衡資料集,這裡採用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 產品生命週期 的解讀和應用,限於本人水平和能力因素,不夠深刻,全面...
基於資料探勘的客戶流失分析案例
客戶挽留在很多行業都是乙個備受關注的問題,比如電信 銀行 保險 零售等。要做客戶挽留就需要對客戶流失進行預警 客戶流失原因分析 客戶滿意度或忠誠度研究 客戶生命週期研究等相關問題進行深入而全面的分析。例如,對客戶的行為特徵進行分析,可以了解有多少客戶流失,客戶是什麼時候流失的,以及客戶是如何流失的等...