使用python进行数据处理的实例(数据为某公司HR部门关于员工信息的部分摘录,kaggle上面的一次赛题)

https://www.kaggle.com/c/kfru-dbm-hr-analytics

该实例是根据其他所给属性预测员工是否会离职,代码实现如下所示

import pandas as pd
from sklearn.preprocessing import MinMaxScaler,StandardScaler
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
from sklearn.decomposition import PCAdef hr_preprocessing(sl=False,le=False,npr=False,amh=False,tsc=False,wa=False,pl5=False,dp=False,slr=False,lower_id=False,ld_n=1):df=pd.read_csv('C:\\Users\\Administrator\Desktop\\network\\HR.csv')#1 清洗数据,根据探索性数据分析出的结果来去掉空值df=df.dropna(subset=['satisfaction_level','last_evaluation'])df=df[df['satisfaction_level']<=1][df['salary']!='nme']#2 得到标注label=df['left']df=df.drop('left',axis=1)#3 特征选择(因为本文的特征本来就不多,暂时不做)# 4 特征处理(归一化,标准化,降维)scaler_lst=[sl,le,npr,amh,tsc,wa,pl5]column_lst = ["satisfaction_level", "last_evaluation", "number_project","average_monthly_hours", "time_spend_company", "Work_accident","promotion_last_5years"]for i in range(len(scaler_lst)):if not scaler_lst[i]:df[column_lst[i]]=MinMaxScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]else:df[column_lst[i]]=StandardScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]#针对离散值的处理scaler_lst=[slr,dp]column_lst=['salary','department']for i in range(len(scaler_lst)):if not scaler_lst[i]:if column_lst[i]=='salary':df[column_lst[i]]=[map_salary(s)for s in df['salary'].values]else:df[column_lst[i]]=LabelEncoder().fit_transform(df[column_lst[i]])df[column_lst[i]]=MinMaxScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]else:df=pd.get_dummies(df,columns=[column_lst[i]])if lower_id:return PCA(n_components=ld_n).fit_transform(df.values),labelreturn df,labeld=dict([('low',0),('medium',1),('high',2)])
def map_salary(s):return d.get(s,0)#建模
def hr_modeling_nn(features,label):from sklearn.model_selection import train_test_split#sklearn中没有可以一次性将数据划分成验证集、训练集、测试集的包,所以需要进行两步划分f_v=features.valuesl_v=label.valuesX_tt,X_validation,Y_tt,Y_validation=train_test_split(f_v,l_v,test_size=0.2)X_train,X_test,Y_train,Y_test=train_test_split(X_tt,Y_tt,test_size=0.25)#print(len(X_train),len(X_test),len(X_validation))#分类from sklearn.metrics import accuracy_score,recall_score,f1_scorefrom sklearn.neighbors import NearestNeighbors,KNeighborsClassifierfrom sklearn.naive_bayes import GaussianNB,BernoulliNBfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.svm import SVCfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.ensemble import AdaBoostClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.ensemble import GradientBoostingClassifiermodels=[]models.append(('KNN',KNeighborsClassifier(n_neighbors=3)))models.append(('GaussianNB',GaussianNB()))models.append(('BernoulliNB',BernoulliNB()))models.append(('DecisionTreeGini',DecisionTreeClassifier()))models.append(('DecisionTreeEntropy',DecisionTreeClassifier(criterion='entropy')))models.append(('SVM:',SVC(C=1000)))models.append(('OriginalRandomForest',RandomForestClassifier()))models.append(('RandomForest',RandomForestClassifier(n_estimators=11,max_features=None)))models.append(('Adaboost',AdaBoostClassifier(n_estimators=100)))models.append(('LogisticRegression',LogisticRegression(C=1000,tol=1e-10,solver='sag',max_iter=10000)))models.append(('GBDT',GradientBoostingClassifier(max_depth=6,n_estimators=100)))for clf_name ,clf in models:clf.fit(X_train,Y_train)xy_list=[(X_train,Y_train),(X_validation,Y_validation),(X_test,Y_test)]for i in range(len(xy_list)):X_part=xy_list[i][0]Y_part=xy_list[i][1]Y_pred=clf.predict(X_part)print(i)print(clf_name,'-ACC',accuracy_score(Y_part,Y_pred))print(clf_name,'-REC:',recall_score(Y_part,Y_pred))print(clf_name,'-F1:',f1_score(Y_pred,Y_part))#回归
def regr_t(features,label):print('X',features)print('Y',label)from sklearn.linear_model import LinearRegression,Ridge,Lassoregr=Ridge(alpha=1)regr.fit(features.values,label.values)Y_pred=regr.predict(features.values)print('Coef:',regr.coef_)from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_scoreprint('MSE:',mean_squared_error(label.values,Y_pred))print('MAE:',mean_absolute_error(label.values,Y_pred))print('R2:',r2_score(label.values,Y_pred))def main():features,label=hr_preprocessing()hr_modeling_nn(features,label)regr_t(features[['number_project','average_monthly_hours']],features['last_evaluation'])
if __name__=='__main__':main()

Python数据处理实例相关推荐

  1. python数据处理实例-Python数据处理numpy.median的实例讲解

    numpy模块下的median作用为: 计算沿指定轴的中位数 返回数组元素的中位数 其函数接口为: median(a, axis=None, out=None, overwrite_input=Fal ...

  2. python数据处理实例-python数据处理实战(必看篇)

    一.运行环境 1.python版本 2.7.13 博客代码均是这个版本 2.系统环境:win7 64位系统 二.需求 对杂乱文本数据进行处理 部分数据截图如下,第一个字段是原字段,后面3个是清洗出的字 ...

  3. python数据处理实例-Python----数据预处理代码实例

    本文实例为大家分享了Python数据预处理的具体代码,供大家参考,具体内容如下 1.导入标准库 import numpy as np import matplotlib.pyplot as plt i ...

  4. python数据处理实例-Python数据预处理实例详解

    Python----数据预处理代码实例 本文实例为大家分享了Python数据预处理的具体代码,供大家参考,具体内容如下 1.导入标准库 import numpy as np import matplo ...

  5. python数据处理实例之月销售额时序变化及月环比可视化展现

    理论基础知识可以看我之前的博客: 1.python之Numpy知识点详细总结 2.python最最最重要的数据分析工具之pandas 3.pandas之表连接与高级查询 也可以进入我的专栏:欢迎订阅哦 ...

  6. python数据处理实例-入门Python数据分析最好的实战项目(一)

    目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析. 数据源:博主通过爬虫采集的链家全网北京二手房数据(公众号后台回复 二手房数据 即可获取). 下面 ...

  7. python数据处理实例-Python大数据处理案例

    分享 知识要点: lubridate包拆解时间 | POSIXlt 利用决策树分类,利用随机森林预测 利用对数进行fit,和exp函数还原 训练集来自Kaggle华盛顿自行车共享计划中的自行车租赁数据 ...

  8. python数据处理实例-Python数据分析实例操作

    import pandas as pd #导入pandas import matplotlib.pyplot as plt #导入matplotlib from pylab import * mpl. ...

  9. python数据处理实例-python数据分析实例(1)

    1.获取数据: 想要获得道指30只成分股的最新股价 importrequestsimportreimportpandas as pddefretrieve_dji_list():try: r= req ...

最新文章

  1. linux 交叉编译选项
  2. 广东海洋大学微型计算机考试,广东海洋大学2007-2008微型计算机原理及应用
  3. 刷题总结——烽火传递(单调队列+dp)
  4. Python+Matplotlib制作动画
  5. JavaScript-内存空间
  6. OSChina 周四乱弹 ——妹子喜欢的是程序员 这是标准……
  7. 去除android控件滑动的时候出现的阴影
  8. python 编码报错问题 'ascii' codec can't encode characters 解决方法
  9. 函数对象、对象、原型
  10. 【优化电价】基于matlab内点法求解实时电价最优问题【含Matlab源码 1161期】
  11. hzk16 8 16c语言示例,[资料共享]汉字库HZK16的使用,强烈推荐: 486959c6.rar
  12. jmeter使用.jmx脚本
  13. 《股市稳赚》书中的精髓:用简单的神奇公式进行股票投资,获得稳定而持久的收益。
  14. 2837xd代码生成模块学习(3)——IIC、eCAN、SCI、Watchdog、eCAP模块
  15. JAVA基础学习(二)
  16. java之hashTab
  17. uniapp实现调起地图导航
  18. 远程计算机IP地址如何获取,获取远程主机的IP地址
  19. LaTeX记录 —— 特殊符号
  20. Squirrel and chestnut CodeChef - SQUIRREL

热门文章

  1. 使用Centos7部署静态网站
  2. 不伤原图电脑在线去水印网站
  3. Thymeleaf th:each遍历,th:if、th:switch 条件判断,input,select,radio 回显赋值
  4. CAD 二次开发 图层操作(1)创建图层
  5. IDEA配置文件乱码
  6. qt - the inferior stopped because it received a signal from the operation system.
  7. 贷款买房怎么做才划算?贷款买房注意事项
  8. 反向延长线段什么意思_《反向延长线》
  9. 《Thinking in Bets》读书分享 - 如何在信息不完全情况下做出更好的决策(1)
  10. JavaScript自动生成博文目录导航