首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一种在python中提供NaN值的热编码

一种在python中提供NaN值的热编码
EN

Stack Overflow用户
提问于 2020-10-14 18:21:33
回答 3查看 302关注 0票数 0

我有一个分类案例研究,其中我使用Logistic回归模型。我想使用一个热编码将我的分类列(SalStat)值转换为0和1。这是我的代码:

代码语言:javascript
复制
data2["SalStat"] = data2["SalStat"].map({"less than or equal to 50,000":0, "greater than 50,000":1})
print(data2["SalStat"])

上面的代码没有将值转换为01,而是将它们转换为nan!,我哪里错了?

PS: SalStat列将行分类为“小于或等于50,000”或“大于50,000”

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-14 18:32:02

我猜它抛出错误是因为SalStat列中的值。最好将它们赋给一个变量,而不是手动键入。

代码语言:javascript
复制
val_1 = data2["SalStat"].unique()[0]
val_2 = data2["SalStat"].unique()[1]

data2["SalStat"] = data2["SalStat"].map({val_1 :0, val_2 :1})
print(data2["SalStat"])
票数 0
EN

Stack Overflow用户

发布于 2020-10-14 18:28:27

我认为问题可能出在您定义的映射器上。如果文本中有一些空格怎么办?看看这个answer

票数 0
EN

Stack Overflow用户

发布于 2020-10-14 18:55:19

对于一次热编码的过程,我建议你尝试pd.get_dummies(data2'SalStat')。这是pandas提供的一种方法,它将对分类特征执行One- categorical。.get_dummies()方法实际上是一次热编码的速记。如果你想进行漫长的OHE,你可以-

代码语言:javascript
复制
from sklearn.preprocessing import OneHotEncoder

这是一种预处理技术,用于将分类类转换为二进制特征。在One-Hot编码过程中,每个分类类将成为它自己的特征,由二进制数据类型组成,1 (1)表示类的存在,0 (0)表示不存在。例如:

代码语言:javascript
复制
from sklearn.preprocessing import OneHotEncoder
import pandas as pd

dataframe = pd.DataFrame({'Name': ['Jack', 'Mary', 'Sheldon']})

print(dataframe)
print(' ')

technique = OneHotEncoder(sparse=False,
                          drop=None,
                          categories='auto',
                          handle_unknown='error')

new_dataframe = pd.DataFrame(technique.fit_transform(dataframe), 
columns=technique.categories_)

print(new_dataframe)

原始数据帧:

代码语言:javascript
复制
      Name
0     Jack
1     Mary
2  Sheldon

新数据帧:

代码语言:javascript
复制
  Jack Mary Sheldon
0  1.0  0.0     0.0
1  0.0  1.0     0.0
2  0.0  0.0     1.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64351271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档