机器学习实战(一)——员工离职预测

举报
ArimaMisaki 发表于 2022/08/09 22:41:16 2022/08/09
【摘要】 文章目录 员工离职预测——逻辑回归的应用1 读取文件2 独热编码3 划分数据集4 归一化5 逻辑回归预测6 模型预测及评估 员工离职预测——逻辑回归的应用 开始这个案例之前,请先点击这...

员工离职预测——逻辑回归的应用

开始这个案例之前,请先点击这里的数据集进行下载:HR_comma_sep.zip - 蓝奏云 (lanzout.com)

1 读取文件

我们使用pandas来读取输出并且进行预处理。首先是导入代码所需的包。

import numpy as np
import pandas as pd

  
 
  • 1
  • 2

接下来写一个函数用于读取CSV文件。

def load_data():
    """加载数据集"""
    data = pd.read_csv("./HR_comma_sep.csv") # 读取文件
    return data
data = load_data()
data

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

out:

image-20220508093701736

2 独热编码

从数据集中可以看到。有一些数据是非数值的,我们要将他转为数值型数据才能进行下面的工作。

from sklearn.preprocessing import OneHotEncoder
def one_hot(data):
    """将原数据中的非数值转为数值类型"""
    oh = OneHotEncoder() # 实例化转换器
    result = oh.fit_transform(data[["sales"]])# 转换sales
    re = pd.DataFrame(result.toarray(),columns = oh.categories_[0],
                     index =  data.index
                     )
    
    result1 = oh.fit_transform(data[["salary"]])# 转换salary
    re1 = pd.DataFrame(result1.toarray(),columns = oh.categories_[0] , 
                     index =  data.index
                     )
    
    data_final  = pd.concat([data, re, re1],axis = 1)
    data_final.drop('sales',inplace = True,axis = 1)
    data_final.drop('salary',inplace = True,axis = 1)
    return data_final
data = one_hot(data)
data

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

out:

image-20220508134040229

3 划分数据集

将数据集中的非数值数据转为独热编码后,下一步就是要将数据集划分为训练集和测试集了。

def split_data(data):
    """划分数据集"""
    target = data.loc[:,'left'] # 分离标签
    data = data.drop(['left'],axis = 1) # 分离数据
    x_train,x_test,y_train,y_test = train_test_split(data,target,random_state=88)
    return x_train,x_test,y_train,y_test
x_train,x_test,y_train,y_test = split_data(data)
x_train

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

out:

image-20220508134207394

4 归一化

对于非标签数据来说,这些数据有些数值大,有些数值小,使得模型的收敛速度变慢,为此,我们需要进行归一化操作。

from sklearn.preprocessing import MinMaxScaler
def normalize(x_train,x_test):
    """归一化处理"""
    transfer = MinMaxScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    return x_train,x_test
x_train,x_test = normalize(x_train,x_test)
x_train,x_test

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

out:

image-20220508134354733

5 逻辑回归预测

当所有准备工作做完后,我们就要使用sklearn自带的包来训练模型了。

from sklearn.linear_model import LogisticRegression
"""利用逻辑回归来预测员工离职"""
estimitor = LogisticRegression()
estimitor.fit(x_train,y_train)

  
 
  • 1
  • 2
  • 3
  • 4

out:

image-20220508134533653

6 模型预测及评估

当模型训练完成后,我们需要对模型进行预测和评估。

from sklearn.metrics import accuracy_score, classification_report
# 模型预测及评估
y_pred = estimitor.predict(x_test)
print('Accuracy:', accuracy_score(y_test,y_pred))
print('Classification Report')
print(classification_report(y_test, y_pred))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

out:

image-20220508134632695

文章来源: blog.csdn.net,作者:ArimaMisaki,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/chengyuhaomei520/article/details/124647266

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。