我有这个柱子
df["Pclass"].tail()
Pclass
2
1
3
1
3
我创造了柱子的假人
dummies = pd.get_dummies(df["Pclass"],prefix="Pclass")
df = pd.concat([df,dummies],axis=1)
结果
df["Pclass_1"].tail()
Pclass_1 Pclass_2 Pclass_3
886 0 1 0
887 1 0 0
888 0 0 1
889 1 0 0
890 0 0 1
我不放弃它,因为它规定列中的数字被转换成1和0
^{}
它基本上是将类别的每个唯一值旋转到它自己的列,并有一个布尔标志(
1
或0
)来标记该行上存在哪个类别值。你知道吗让我们看一个不那么抽象的例子:
如您所见,我们原始列的第一行是
male
,在我们的dummies列sex_male
,我们看到有一个标志1
。你知道吗然后在第二行,原始列中的值是
female
,我们在dummies列中看到sex_female
有标志1
:等等。你知道吗
同样需要记住的是,当您应用
pd.get_dummies
时:用机器学习的术语来说,我们称之为热编码
对于^{} ,它将如下所示:
它为原始列中出现的每个值创建一个伪列,然后为每一行输入1(如果该行的值与伪列对应),否则输入0。你知道吗
行886的Pclass列中有一个2,因此它被转换为Pclass 2列中的1和所有其他伪列中的0。你知道吗
第887行的Pclass列中有一个1,因此该列被转换为Pclass 1列中的1和所有其他伪列中的0。你知道吗
依赖于数值输入的预测模型不能直接 处理打开的文本字段或分类属性。 相反,这些信息丰富的数据需要在 将信息呈现给模型。 基于树和朴素贝叶斯模型是例外;大多数模型 要求预测值采用数字形式。你知道吗
为无序类别创建虚拟变量是一种将分类属性转换为数值属性的方法。@Erfan回答了虚拟变量的作用。但以编码有序属性为例:具有C类别的无序预测器可以用C−1表示 二进制伪变量或二进制伪变量的散列版本。 这些方法有效地将分类信息呈现给用户 模型。你知道吗
但是现在假设C范畴有一个相对顺序。为了 例如,考虑一个类别为“低”、“中”的预测器, 和“高” 为无序数据创建虚拟属性将丢失 相对顺序中包含的信息。
对于有序数据编码:
相关问题 更多 >
编程相关推荐