sklearn预测员工离职率

1、sklearn介绍

sklearn拥有可以用于监督和无监督学习的方法,一般来说监督学习使用的更多。sklearn中的大部分函数可以归为估计器(Estimator)和转化器(Transformer)两类。

1.1 估计器(Estimator)

其实就是模型,它用于对数据的预测或回归。基本上估计器都会有以下几个方法:

  • fit(x,y) :传入数据以及标签即可训练模型,训练的时间和参数设置,数据集大小以及数据本身的特点有关。
  • score(x,y)用于对模型的正确率进行评分(范围0-1)。但由于对在不同的问题下,评判模型优劣的的标准不限于简单的正确率,可能还包括召回率或者是查准率等其他的指标,特别是对于类别失衡的样本,准确率并不能很好的评估模型的优劣,因此在对模型进行评估时,不要轻易的被score的得分蒙蔽。
  • predict(x)用于对数据的预测,它接受输入,并输出预测标签,输出的格式为numpy数组。我们通常使用这个方法返回测试的结果,再将这个结果用于评估模型。

1.2 转化器(Transformer)

用于对数据的处理,例如标准化、降维以及特征选择等等。同与估计器的使用方法类似。

  • fit(x,y) :该方法接受输入和标签,计算出数据变换的方式。
  • transform(x) :根据已经计算出的变换方式,返回对输入数据x变换后的结果(不改变x)
  • fit_transform(x,y) :该方法在计算出数据变换方式之后对输入x就地转换。

2、数据集

2.1 数据展示

hr数据

left列为结果列,0代表离职,1代表未离职。
有两列是字符列,需要类比成数字。

2.2 数据分析

检查是否有缺失数据 isnull().any()
在这里插入图片描述

显示统计数据 describe()
describe

2.3 数据集地址

链接:https://pan.baidu.com/s/1AakOaVsJNvEFaoqUM0DNMA
提取码:4ey9

完整代码

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier # 随机森林
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier  # KNN分类
from sklearn.tree import DecisionTreeClassifier  # 决策树
from sklearn.svm import SVC  # 向量机
from sklearn.naive_bayes import GaussianNB  # 高斯分布的朴素贝叶斯
# 读入数据到Pandas Dataframe类型
hr_data = pd.read_csv('../HR-analytics/HR_comma_sep.csv', index_col=None)

# 将left列移到第一列(不移动没有影响)
front = hr_data['left']
hr_data.drop(labels=['left'], axis=1, inplace = True)
hr_data.insert(0, 'left', front)

# 将字符串转化成数值型
hr_data["sales"] = hr_data["sales"].astype('category').cat.codes
hr_data["salary"] = hr_data["salary"].astype('category').cat.codes

hr_data_np = np.array(hr_data)
x = np.delete(hr_data_np,0,axis=1)
# x = np.delete(x,8,axis=1)  # 若string型的两列不转化,删除
# x = np.delete(x,7,axis=1)

y = hr_data_np[:,0]
# numpy转成列表
y = y.tolist()
# 划分训练集
train_x, test_x, train_y, test_y = \
    train_test_split(x, y, test_size=0.3, random_state=3)
# 选择算法,决策树
dt_model = DecisionTreeClassifier()
'''
用于替换的算法
RandomForestClassifier() # 随机森林
KNeighborsClassifier() # KNN
SVC()
GaussianNB()
LogisticRegression()
'''
# 训练
dt_model.fit(train_x, train_y)
# 测试
predict_y = dt_model.predict(test_x)
score = dt_model.score(test_x, test_y)

print('输出预测值:',predict_y)
print('原有的标签:',test_y)
print('得分:', score)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值