微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas中的标签平滑(软目标)

在Pandas中有一个get_dummies方法,one-hot编码分类变量.现在我想按照Deep Learning书7.5.1节中的描述进行标签平滑:

Label smoothing regularizes a model based on a softmax with k output values by replacing the hard 0 and 1 classification targets with targets of eps / k and 1 - (k - 1) / k * eps, respectively.

在Pandas数据帧中做标签熏制的最有效和/或最优雅的方法是什么?

解决方法:

首先,让我们使用更简单的方程(ε表示从“真实标签”移动的概率质量,并分配给所有剩余的方程).

1 -> 1 - ϵ
0 -> ϵ / (k-1) 

你可以简单地使用上面很好的数学属性,因为你所要做的就是

x -> x * (1 - ϵ) + (1-x) * ϵ / (k-1)

因此,如果您的虚拟列是a,b,c,d就可以了

indices = ['a', 'b', 'c', 'd']
eps = 0.1
df[indices] = df[indices] * (1 - eps) + (1-df[indices]) * eps / (len(indices) - 1)

哪个

>>> df
   a  b  c  d
0  1  0  0  0
1  0  1  0  0
2  0  0  0  1
3  1  0  0  0
4  0  1  0  0
5  0  0  1  0

回报

        a         b         c         d
0  0.900000  0.033333  0.033333  0.033333
1  0.033333  0.900000  0.033333  0.033333
2  0.033333  0.033333  0.033333  0.900000
3  0.900000  0.033333  0.033333  0.033333
4  0.033333  0.900000  0.033333  0.033333
5  0.033333  0.033333  0.900000  0.033333

正如所料.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐