特征工程之数据预处理——哑变量处理

时间:2023-01-17 08:56:11



???? 『精品学习专栏导航帖』

  • ????​​最适合入门的100个深度学习实战项目​​????
  • ????​​【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码​​????
  • ????​​【机器学习入门项目10例目录】项目详解 + 数据集 + 完整源码​​????
  • ????​​【机器学习项目实战10例目录】项目详解 + 数据集 + 完整源码​​????
  • ????​​Java经典编程100例​​????
  • ????​​Python经典编程100例​​????
  • ????​​蓝桥杯历届真题题目+解析+代码+答案​​????
  • ????​​【2023王道数据结构目录】课后算法设计题C、C++代码实现完整版大全​​????

文章目录

  • ​​前言​​
  • ​​一、✌ get_dummies​​
  • ​​1、✌ 导库,创建表格​​
  • ​​2、✌ 调用哑变量方法​​
  • ​​3、✌ 删除无用列​​
  • ​​4、✌ 修改列的名字​​
  • ​​二、✌OneHotEncoder​​
  • ​​1、✌ 导库​​
  • ​​2、✌ 调用OneHotEncoder函数​​
  • ​​✌ 总结​​

前言

机器学习在建模期间一般使用的是纯数值型数据,但是在实际生活中往往数据中会掺杂一些文本数据,例如人员信息中的性别等,这里的男,女,我们可以转化成为线性不相关的矩阵,如(1,0)、(0,1),在机器学习中这被称为哑变量。本节介绍两种方法来实现数值与非数值的转化,分别是pandas库中的get_dummies()和sklearn中的OneHotEncoder。


提示:以下是本篇文章正文内容,下面案例可供参考

一、✌ get_dummies

1、✌ 导库,创建表格

import pandas as pd
df=pd.DataFrame({'编号':[1,2,3],'性别':['男','女','男']})

特征工程之数据预处理——哑变量处理

2、✌ 调用哑变量方法

df=pd.get_dummies(df,columns=['性别'])

特征工程之数据预处理——哑变量处理

3、✌ 删除无用列

因为性别只包含两个值,所以可以用一列来表达

df=df.drop(columns=['性别_女'])

4、✌ 修改列的名字

df=df.rename(columns={'性别_男':'性别'})

特征工程之数据预处理——哑变量处理

二、✌OneHotEncoder

1、✌ 导库

from sklearn.preprocessing import OneHotEncoder
df=pd.DataFrame({'编号':[1,2,3],'性别':['男','女','男']})

2、✌ 调用OneHotEncoder函数

  • 首先实例化OneHotEncoder
  • 然后导入数据,然后导出结果
df_sex=OneHotEncoder().fit_transform(pd.DataFrame(df.iloc[:,1]).values).toarray()
df=pd.concat([df,pd.DataFrame(df_sex)],axis=1)
df.columns=['编号','性别','性别_女','性别_男']
df

特征工程之数据预处理——哑变量处理

✌ 总结

提示:这里对文章进行总结:
哑变量处理将分类变量转化为数值变量,为后续构建模型打好了基础,但是构造哑变量容易产生高维数据,所以需要和PCA一起使用,为高维数据进行降维。