数据挖掘竞赛-员工离职预测训练赛
生活随笔
收集整理的這篇文章主要介紹了
数据挖掘竞赛-员工离职预测训练赛
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
員工離職預(yù)測(cè)
簡(jiǎn)介
DC的一道回歸預(yù)測(cè)題。是比較基礎(chǔ)的分類問題,主要對(duì)邏輯回歸算法的使用。核心思路為屬性構(gòu)造+邏輯回歸。
過程
數(shù)據(jù)獲取
報(bào)名參與比賽即可獲得數(shù)據(jù)集的百度網(wǎng)盤地址,這個(gè)比賽時(shí)間很久,隨時(shí)可以報(bào)名。
數(shù)據(jù)探索
- 無關(guān)項(xiàng)
- EmployeeNumber為編號(hào),對(duì)建模是干擾項(xiàng),刪除即可。
- StandardHours和Over18全數(shù)據(jù)集固定值,沒有意義,刪除。
- 相關(guān)性高
- 相關(guān)圖
可以發(fā)現(xiàn),有兩項(xiàng)相關(guān)性極高,刪除其中一個(gè)MonthlyIncome。
數(shù)據(jù)預(yù)處理
- one-hot編碼
- 對(duì)幾個(gè)固定幾個(gè)取字符串值的特征進(jìn)行one-hot編碼
- 屬性構(gòu)造
- 特征數(shù)目較少,暴力拼接不同屬性,構(gòu)造新屬性
數(shù)據(jù)挖掘建模
既是回歸賽又是分類題,很明顯就是使用邏輯回歸(LR)模型。但是還是使用未調(diào)參的幾個(gè)基礎(chǔ)模型進(jìn)行交叉驗(yàn)證,發(fā)現(xiàn)LR較高,加上其他模型調(diào)參麻煩,就沒有多加研究。
# 多模型交叉驗(yàn)證 from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier import sklearn.neural_network as sk_nn from sklearn.model_selection import cross_val_score models = {'LR': LogisticRegression(solver='liblinear', penalty='l2', C=1),'SVM': SVC(C=1, gamma='auto'),'DT': DecisionTreeClassifier(),'RF' : RandomForestClassifier(n_estimators=100),'AdaBoost': AdaBoostClassifier(n_estimators=100),'GBDT': GradientBoostingClassifier(n_estimators=100),'NN': sk_nn.MLPClassifier(activation='relu',solver='adam',alpha=0.0001,learning_rate='adaptive',learning_rate_init=0.001, max_iter=1000) }for k, clf in models.items():print("the model is {}".format(k))scores = cross_val_score(clf, x_train, y_train, cv=10)print(scores)print("Mean accuracy is {}".format(np.mean(scores)))print("*" * 100)對(duì)LR模型進(jìn)行網(wǎng)格搜索調(diào)參,發(fā)現(xiàn)默認(rèn)參數(shù)即可有不錯(cuò)的平臺(tái)驗(yàn)證率。
# 網(wǎng)格搜索調(diào)參 from sklearn.model_selection import GridSearchCV from sklearn.linear_model import LogisticRegression penaltys = ['l1', 'l2'] Cs = np.arange(1, 10, 0.1) parameters = dict(penalty=penaltys, C=Cs ) lr_penalty= LogisticRegression(solver='liblinear') grid= GridSearchCV(lr_penalty, parameters,cv=10) grid.fit(x_train,y_train) grid.cv_results_ print(grid.best_score_) print(grid.best_params_)補(bǔ)充說明
其實(shí)XgBoost和RF可能效果更好一些,但是由于一些原因,沒有深究,有興趣的可以進(jìn)一步研究,最高的貌似研究有0.92以上通過率了。具體數(shù)據(jù)集和代碼可以在我的Github找到,result.csv即為提交文件。附上提交時(shí)的平臺(tái)分?jǐn)?shù)和排名(22/1808)。
總結(jié)
以上是生活随笔為你收集整理的数据挖掘竞赛-员工离职预测训练赛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Markdown-数学公式语法
- 下一篇: Markdown-基础语法