本教程讨论了有关BackWard差异编码的信息:
这种技术属于分类特征的对比编码系统。K类的一种特征,或水平,通常作为K-1虚拟变量的序列进入回归。在反向差分编码中,将一个级别的因变量的平均值与先前级别的因变量的平均值进行比较。这种类型的编码对于名义变量或序数变量可能很有用。
如果您想学习其他对比编码方法,可以查看此资源。
代码结构与category_encoders库中的任何方法几乎相同,这一次您将从它调用BackwardDifferenceEncoder。
正如它所说的,它将把k个类别转换成k-1二进制类别。
我在它的数据库上使用了这个方法。对于‘运营商’,我们有11个类别,我们收到的编码后,也是11个类别。它不是应该是10个类别或10列二进制值吗?
df_flights = pd.read_csv('https://raw.githubusercontent.com/ismayc/pnwflights14/master/data/flights.csv')
df_flights.head()
df_flights['carrier'].unique()因此,我们有11个独特的类别。
!pip install category_encoders
import category_encoders as ce
cat_df_flights = df_flights.select_dtypes(include=['object']).copy()
encoder = ce.BackwardDifferenceEncoder(cols=['carrier'])
df_bd = encoder.fit_transform(cat_df_flights)
df_bd.head()结果也是11列二进制数据,但根据本教程的说法,应该是10.
发布于 2019-05-26 19:20:04
我不确定,但可能是因为你可以推断出剩下的课程。例如,假设您有两种颜色的{red, blue},并且希望对该变量进行编码。一个选项是创建两个列,一个用于红色,另一个用于蓝色,但您也可以创建n - 1列--例如" red ";如果值为1,则示例为红色,否则为蓝色。
发布于 2020-06-19 21:25:15
如果检查编码的输出,则正确地指出有11列。然而,这些列中只有10列包含新的信息,这些信息基于载体列中的类别之间的比较。第11列,“拦截”,只是一系列的1s,不会影响你的建模。
至于为什么第11栏存在,我不完全确定。按照向后差分编码表的逻辑,也许可以将其看作是将最上层与下一个级别进行比较。如果列中的每个值都属于最上层或以下级别,则此比较中编码列的所有值将为1(如果存在其他值,则为0)。
https://stackoverflow.com/questions/56316626
复制相似问题