Dummy Variable&One-Hot Encoding区

2018-10-15  本文已影响0人  这是沸羊羊的干爹

分析建模,日常问题整理(十一)


2018.10.8~2018.10.14
热爱生活,品味细节


如果不使用regularization(正则化),one-hot encoding的模型会有多余的自由度。这个自由度体现在你可以把某一个分类型变量各个值对应的权重都增加某一数值,同时把另一个分类型变量各个值对应的权重都减小某一数值,而模型不变。在dummy encoding中,这些多余的自由度都被统摄到intercept里去了。这么看来,dummy encoding更好一些。
如果使用regularization(正则化),regularization就能够处理这些多余的自由度。此时,可能用one-hot encoding更好,因为每个分类型变量的各个值的地位就是对等的了。

以线性模型举例, 分类超平面是 wx+b =0,dummy下的话 w 有唯一解,one-hot 下 w 有无穷解 (就是一部分权重增加点,另一部分权重减少点),这样每个变量的权重就没有解释意义了,也使得模型没有真正的预测效果。加了正则化之后,相当于约束了 w 的解空间,使得 w 相对有意义

sns.set(style="ticks", color_codes=True)
g = sns.pairplot(df[['a','b','c']],diag_kind="kde") # 直方图
g = sns.pairplot(df[['a','b','c']],diag_kind="kde") # 分布曲线
g = sns.pairplot(df[['a','b','c']], hue="e") # 指定分类变量
g = sns.pairplot(iris, kind="reg") # 使用回归
下载.png

seaborn.pairplot官方文档

facetgrid 可以输出多个变量的叠加图

  1. 具有多个轴,各个轴的变量相同
    2.随着某些变量的变化,轴变量关系的变化情况。
    3.可展示三个变量的条件关系,将其中的变量赋值给网格的行和列,并使用不同颜色的绘图元素。
    row , col , hue都是分类变量,map是连续变量。
h = sns.FacetGrid(data1, row = 'Sex', col = 'Pclass', hue = 'Survived')
h.map(plt.hist, 'Age', alpha = .75)
h.add_legend()

输出对比不同性别、不同Pclass条件下Survived等于0和等于1的年龄分布。
plt.hist可以换成plt.scatter/ sns.kdeplot等其他制图函数。


微信截图_20181025145148.png

seaborn.FacetGrid官方文档

数据分析除了分析单变量,还要分析变量之间的相关性,分析变量两两之间的特性,或者三个变量之间的相关性。

上一篇下一篇

猜你喜欢

热点阅读