一种热编码在 python 中给出 nan 值
One Hot Encoding giving nan values in python
我有一个使用逻辑回归模型的分类案例研究。我想使用 One Hot Encoding 将我的分类列 (SalStat) 值转换为 0 和 1。这是我的代码:
data2["SalStat"] = data2["SalStat"].map({"less than or equal to 50,000":0, "greater than 50,000":1})
print(data2["SalStat"])
以上代码不会将值转换为 0
和 1
,而是将它们转换为 nan!
我哪里错了?
PS:SalStat 列将行分类为“小于或等于 50,000”或“大于 50,000”
我认为问题可能出在您定义的映射器上。
如果文本中有一些空格怎么办。
看看这个answer
我猜它会因为 SalStat 列中的值而抛出错误。
最好将它们分配给一个变量而不是手动输入。
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"])
对于One-Hot编码的过程,建议你尝试pd.get_dummies(data2['SalStat'])。它是 pandas 提供的一种方法,将对分类特征进行 One-Hot 编码。 .get_dummies() 方法实际上是对One-Hot 的short-hand 编码。如果您想长期进行 OHE,您可以 -
from sklearn.preprocessing import OneHotEncoder
这是一种预处理技术,用于将我们的分类 classes 转换为二进制特征。在 One-Hot 编码过程中,每个分类 class 将成为它自己的特征,由二进制数据类型组成,其中一个 (1) 表示存在 class,零 (0) 表示除此以外。例如:
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)
原始数据框:
Name
0 Jack
1 Mary
2 Sheldon
新数据框:
Jack Mary Sheldon
0 1.0 0.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 1.0
我有一个使用逻辑回归模型的分类案例研究。我想使用 One Hot Encoding 将我的分类列 (SalStat) 值转换为 0 和 1。这是我的代码:
data2["SalStat"] = data2["SalStat"].map({"less than or equal to 50,000":0, "greater than 50,000":1})
print(data2["SalStat"])
以上代码不会将值转换为 0
和 1
,而是将它们转换为 nan!
我哪里错了?
PS:SalStat 列将行分类为“小于或等于 50,000”或“大于 50,000”
我认为问题可能出在您定义的映射器上。 如果文本中有一些空格怎么办。 看看这个answer
我猜它会因为 SalStat 列中的值而抛出错误。 最好将它们分配给一个变量而不是手动输入。
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"])
对于One-Hot编码的过程,建议你尝试pd.get_dummies(data2['SalStat'])。它是 pandas 提供的一种方法,将对分类特征进行 One-Hot 编码。 .get_dummies() 方法实际上是对One-Hot 的short-hand 编码。如果您想长期进行 OHE,您可以 -
from sklearn.preprocessing import OneHotEncoder
这是一种预处理技术,用于将我们的分类 classes 转换为二进制特征。在 One-Hot 编码过程中,每个分类 class 将成为它自己的特征,由二进制数据类型组成,其中一个 (1) 表示存在 class,零 (0) 表示除此以外。例如:
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)
原始数据框:
Name
0 Jack
1 Mary
2 Sheldon
新数据框:
Jack Mary Sheldon
0 1.0 0.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 1.0