我有一个分类案例研究,其中我使用Logistic回归模型。我想使用一个热编码将我的分类列(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”
发布于 2020-10-14 18:32:02
我猜它抛出错误是因为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"])发布于 2020-10-14 18:28:27
我认为问题可能出在您定义的映射器上。如果文本中有一些空格怎么办?看看这个answer
发布于 2020-10-14 18:55:19
对于一次热编码的过程,我建议你尝试pd.get_dummies(data2'SalStat')。这是pandas提供的一种方法,它将对分类特征执行One- categorical。.get_dummies()方法实际上是一次热编码的速记。如果你想进行漫长的OHE,你可以-
from sklearn.preprocessing import OneHotEncoder这是一种预处理技术,用于将分类类转换为二进制特征。在One-Hot编码过程中,每个分类类将成为它自己的特征,由二进制数据类型组成,1 (1)表示类的存在,0 (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.0https://stackoverflow.com/questions/64351271
复制相似问题