如何在 Flux.jl 中设置 One-Hot 编码?
How to setup One-Hot Encoding in Flux.jl?
我有一些用 Julia 中的符号表示的分类数据,用于解决我想解决的几个不同问题,我认为这些数据非常适合 One-Hot 编码所需的形式。我如何在 Flux.jl 中设置和表示此数据?
如果您不熟悉 One-Hot 编码的一般概念,值得花一些时间在这里阅读:https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/ 一般要点是,在您使用的情况下非数字数据(一些类别名称如“cat”或“dog”而不是 0 或 1),您需要一种方法来采用现有编码(可能是一些文本字符串)并将其切换为机器学习可以识别的数值模型会理解。
Flux 提供了一个built in One-Hot Encoding function,可以按如下方式使用:
julia> using Flux: onehot
julia> onehot(:b, [:a, :b, :c])
3-element Flux.OneHotVector{3,UInt32}:
0
1
0
julia> onehot(:c, [:a, :b, :c])
3-element Flux.OneHotVector{3,UInt32}:
0
0
1
在第一个例子中,我们假设如果我们得到数组:
3-element Flux.OneHotVector{3,UInt32}:
0
1
0
表示它是符号:b
的数值表示。后一个示例是相同的,但对于符号 :c
.
的情况
我有一些用 Julia 中的符号表示的分类数据,用于解决我想解决的几个不同问题,我认为这些数据非常适合 One-Hot 编码所需的形式。我如何在 Flux.jl 中设置和表示此数据?
如果您不熟悉 One-Hot 编码的一般概念,值得花一些时间在这里阅读:https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/ 一般要点是,在您使用的情况下非数字数据(一些类别名称如“cat”或“dog”而不是 0 或 1),您需要一种方法来采用现有编码(可能是一些文本字符串)并将其切换为机器学习可以识别的数值模型会理解。
Flux 提供了一个built in One-Hot Encoding function,可以按如下方式使用:
julia> using Flux: onehot
julia> onehot(:b, [:a, :b, :c])
3-element Flux.OneHotVector{3,UInt32}:
0
1
0
julia> onehot(:c, [:a, :b, :c])
3-element Flux.OneHotVector{3,UInt32}:
0
0
1
在第一个例子中,我们假设如果我们得到数组:
3-element Flux.OneHotVector{3,UInt32}:
0
1
0
表示它是符号:b
的数值表示。后一个示例是相同的,但对于符号 :c
.