前言
机器学习在建模期间一般使用的是纯数值型数据,但是在实际生活中往往数据中会掺杂一些文本数据,例如人员信息中的性别等,这里的男,女,我们可以转化成为线性不相关的矩阵,如(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一起使用,为高维数据进行降维。