解决get_dummies得到结果全部是布尔值的问题

  今天对表格类型的数据集做数据处理的时候,用pandas中的get_dummies()方法对离散的字符型特征做独热编码处理,碰到一个问题:编码出来的结果不是0、1,全是布尔型的True和False,查了网上很多资料,解决问题后特此记录。
  one-hot编码是对离散的特征数据进行特征数字化的常用方法,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
  比如对性别特征:[“男”,“女”]进行One-Hot编码,按照N位状态寄存器来对N个状态进行编码的原理,处理后应该是这样的(有两种特征,所以N=2):[10,01],就是把原来的特征转化成了n个二元数值型的特征,原来的特征有多少种就有多少位,是哪种特征该位置上就是1,其他位置就是0,这样就可以解决分类器不好处理属性数据(字符型)的问题。
  get_dummies是pandas库实现one-hot编码的方式。官方文档:pandas.get_dummies

pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

举例:

import pandas as pd
df = pd.DataFrame([  
            ['zhang' , 'A'],   
            ['wang'   , 'B']])  

df.columns = ['name',  'gender'] 
pd.get_dummies(df) 

  这样就可以对df进行one-hot编码,也可以只对表格中的某几种特征进行one-hot编码:

pd.get_dummies(df,columns=['name','gender'])

  只要指定columns列表就行了,这里要注意一个问题,就是编码完之后得到的表里只有你编码的那几种特征,你要在原来的数据表里把这几种特征删了,在把get_dummies的结果加进去。
  如果你的版本比较新,你可能会得到这么一个结果:
请添加图片描述  查了资料,原因:

get_dummies函数在pandas1.6.0版本之前返回numpy.uint8,无符号八位整数,在1.6.0版本开始更改为返回numpy.bool_,numpy布尔值。
该修改由#45848提出,认为返回值是无符号整型变量将导致难以跟踪的错误,于#48022中完成修复。

  但是这样子给模型训练有可能就会报错,如果你需要int型的,你需要自己指定:

pd.get_dummies(df,columns=['name','gender'],dtype=int)

  结果:
请添加图片描述  问题解决。

      

  更新:有些特征值的取值太多会导致ont-hot编码后的特征矩阵太大无法计算,书接下文:解决one-hot编码时特征值太多导致矩阵维度太大的问题

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: get_dummies函数是Pandas库中的一个功能强大的方法,可以将分类变量转换为虚拟变量,也被称为one-hot编码。虚拟变量是指将分类变量的每个取值都转换为一个新变量,该变量的取值只有0和1,代表了分类变量是否具有某个取值。 使用get_dummies函数可以将分类变量转换为虚拟变量,这样可以方便地用于机器学习算法的输入数据,因为大多数机器学习算法都要求输入为数值型数据。 使用get_dummies函数可以设置一些参数,例如prefix参数可以指定生成的虚拟变量的前缀字符串,prefix_sep参数可以指定生成的虚拟变量的前缀字符串与原始列名之间的分隔符。 保存get_dummies处理后的数据可以使用Pandas库的to_csv函数将数据保存为CSV文件格式,方便后续的数据分析和使用。也可以使用Pandas库的to_pickle函数将数据保存为二进制格式,以便后续加载和使用。 总之,get_dummies函数的保存可以帮助我们将分类变量转换为虚拟变量,并将处理后的数据保存为常用的文件格式,以方便后续的数据分析和使用。 ### 回答2: get_dummies是一个用于将分类型特征转化为虚拟变量的函数,可以在数据预处理中使用。虚拟变量是一种表示分类变量的方法,它将一个拥有不同类别的特征转化为多个二进制变量,可以更好地应用于机器学习模型。 使用get_dummies函数可以将分类型特征转化为多个哑变量,同时保留原始特征列。这个函数会为每个特征值创建一个新的列,并用1表示该特征值是否存在,用0表示该特征值是否缺失。 保存get_dummies转化后的数据可以有助于后续的分析和建模。保存可以通过将其存储为文件的方式,如保存为CSV文件、Excel文件或其他形式的数据文件。保存后,可以随时读取数据以供之后的使用。 在机器学习任务中,经常需要对特征进行转化和处理,get_dummies函数是一种常用的数据预处理方法之一,它可以帮助我们处理分类型特征,并将其转化为可供机器学习模型使用的数值特征。因此,保存get_dummies转化后的数据,可以简化后续的特征处理步骤,同时也有利于数据的可重复使用和分享。 总之,get_dummies函数用于分类型特征的转化,并将其保存为数据文件可以方便后续的数据分析和机器学习建模。 ### 回答3: "get_dummies" 是一个Python库中的函数,旨在将分类变量转换为数值变量以便进行机器学习或数据分析。在使用get_dummies时,通常需要将处理后的数据进行保存以便后续使用。 保存处理后的数据可以使用多种方式,包括将其保存为CSV文件、Excel文件、数据库等。下面是一个示例代码,展示了如何使用get_dummies函数将分类变量进行处理并将结果保存为CSV文件: ```python import pandas as pd # 创建一个包含分类变量的DataFrame data = pd.DataFrame({'Color': ['Red', 'Blue', 'Green'], 'Size': ['Small', 'Medium', 'Large']}) # 使用get_dummies函数进行数据处理 processed_data = pd.get_dummies(data) # 将处理后的数据保存为CSV文件 processed_data.to_csv('processed_data.csv', index=False) ``` 在上述示例中,我们首先创建了一个包含两个分类变量的DataFrame。然后,我们使用get_dummies函数将分类变量转换为数值编码的变量。最后,我们使用to_csv函数将处理后的数据保存为CSV文件,其中index=False表示不保存索引列。 通过这种方式,我们可以将处理后的数据保存在本地,并可以在以后的工作中直接加载使用。这对于数据分析、机器学习模型训练等任务非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一本糊涂张~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值