如何在 Julia Distributions.jl 中的 MixtureModel 中指定权重?
How to specify the weights in a MixtureModel in Julia Distributions.jl?
在Distributions.jl中我们可以指定混合模型的先验。但是我们不能指定权重。例如,如果我想制作这样的混合物:
pdf(Normal(2, 3), x)*w1.+pdf(Normal(5, 10), x)*w2
我真的不能指定权重。出于明显的原因,先验需要加起来为 1。
那么,有没有办法在 MixtureModel 中指定权重?
类似于:
MixtureModel(Normal[
Normal(2, 3),
Normal(5, 10)
], **weights=[w1, w2]**)
谢谢
有关混合模型构造函数的 Distributions.jl 文档对此进行了介绍——您需要 prior
参数。参见
https://juliastats.org/Distributions.jl/v0.14/mixture.html#Constructors-1
这是他们的第一个示例的快速绘图。 [0.2, 0.5, 0.3]
是权重:
julia> using Distributions, Plots
julia> d = MixtureModel(Normal[
Normal(-2.0, 1.2),
Normal(0.0, 1.0),
Normal(3.0, 2.5)], [0.2, 0.5, 0.3])
MixtureModel{Normal}(K = 3)
components[1] (prior = 0.2000): Normal{Float64}(μ=-2.0, σ=1.2)
components[2] (prior = 0.5000): Normal{Float64}(μ=0.0, σ=1.0)
components[3] (prior = 0.3000): Normal{Float64}(μ=3.0, σ=2.5)
julia> x = -10:0.1:10
-10.0:0.1:10.0
julia> plot(x, pdf.(d, x), legend=nothing, xlabel="x", ylabel="pdf")
产生
在Distributions.jl中我们可以指定混合模型的先验。但是我们不能指定权重。例如,如果我想制作这样的混合物:
pdf(Normal(2, 3), x)*w1.+pdf(Normal(5, 10), x)*w2
我真的不能指定权重。出于明显的原因,先验需要加起来为 1。 那么,有没有办法在 MixtureModel 中指定权重? 类似于:
MixtureModel(Normal[
Normal(2, 3),
Normal(5, 10)
], **weights=[w1, w2]**)
谢谢
有关混合模型构造函数的 Distributions.jl 文档对此进行了介绍——您需要 prior
参数。参见
https://juliastats.org/Distributions.jl/v0.14/mixture.html#Constructors-1
这是他们的第一个示例的快速绘图。 [0.2, 0.5, 0.3]
是权重:
julia> using Distributions, Plots
julia> d = MixtureModel(Normal[
Normal(-2.0, 1.2),
Normal(0.0, 1.0),
Normal(3.0, 2.5)], [0.2, 0.5, 0.3])
MixtureModel{Normal}(K = 3)
components[1] (prior = 0.2000): Normal{Float64}(μ=-2.0, σ=1.2)
components[2] (prior = 0.5000): Normal{Float64}(μ=0.0, σ=1.0)
components[3] (prior = 0.3000): Normal{Float64}(μ=3.0, σ=2.5)
julia> x = -10:0.1:10
-10.0:0.1:10.0
julia> plot(x, pdf.(d, x), legend=nothing, xlabel="x", ylabel="pdf")
产生