唐宇迪机器学习之离职预测

最近在看唐宇迪机器学习视频,这个视频我觉得很不错,可是我资源有限,有的视频没有配套的资料、数据集或者是代码,但还是可以看视频了解其中的一些知识点。

项目介绍

该项目是通过员工对公司的满意程度、公司对员工的评估、员工薪资水平、员工岗位、员工工作时长等特征来推断员工是否会离职。

知识点

  1. 通过 df.info( ) 可以看到特征的数据类型,对于int64、float64这样的数据类型来说放入机器学习算法是没有问题的,但是对于object(可理解为str)这样的数据类型是需要进一步处理的。
    eg: 在本项目中是利用pd.get_dummies()直接将其转为one-hot编码。部分代码如下:

    salary_dummy = pd.get_dummies(df['salary'])
    department_dummy = pd.get_dummies(df['depratment'])
    X = pd.concat([X, salary_dummy], axis = 1)
    X = pd.concat([X, department_dummy], axis = 1)
    

    ps: 一般来说如果离散的取值之间没有大小的意义,就用one-hot,如果离散的取值之间有大小的意义就直接映射。

  2. 修改DataFrame中列的名字:

    df.rename(columns = {'修改前的名字':'修改后的名字'}, inplace = True)
    
  3. 特征、标签之间的相关系数:

    df.corr()
    
  4. 柱状图表示属性与标签之间的关系:
    部分代码如下:

    import matplotlib.pyplot as plt
    import seaborn as sns
    % matplotlib inline
    plot = sns.factorplot(x = 'department', y = 'left', kind = 'bar',data = df)
    plot.set_xticklabels(rotation = 45,horizontalalignment = 'right') 
    

    不服输的南瓜
    ps: sns.factorplot()默认画的是折线图,通过添加kind参数可以把折线图改柱形图。

  5. 饼状图表示某职位工资分布情况:
    部分代码如下:

    df[df['department'] == 'management']['salary'].value_counts().plot(kind = 'pie', title = 'Management Salary level distribution')
    
  6. 柱状图表示属性与标签之间的关系:
    部分代码如下:

    bins = np.linspace(0.0001,1.0001,21)
    plt.hist(df['left'] == 1]['satisfaction_level'],bins = bins,alpha=0.7,label = 'Employees Left')
    plt.hist(df['left'] == 0]['satisfaction_level'],bins = bins,alpha=0.5,label = 'Employees Stayed')
    plt.xlabel('satisfaction_level')
    plt.xlim(0,1.05)
    plt.legend(loc = 'best')
    

    不服输的南瓜

  7. 将训练数据划分为训练集和测试集:

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
    
  8. 数据标准化:
    数据标准化主要是排除数据大小值对分类器的干扰,这对于数据集中特征之间取值范围较大时很有意义。部分代码如下:

    from sklearn.preprocessing import StandardScaler
    stdsc = StandardScaler()
    X_train_std =  stdsc.fit_trasform(X_train)
    X_test_std =  stdsc.fit_trasform(X_train)
    

    ps: 它是针对每一个特征维度来做的,而不是针对样本。

  9. 训练集交叉验证:

    from sklearn.model_selection import ShuffleSplit
    cv = ShuffleSplit(n_splits = 20,test_size = 0.3)
    

猜你喜欢

转载自blog.csdn.net/weixin_40283816/article/details/84191228