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

Scipy:对自定义分布进行采样

如何解决Scipy:对自定义分布进行采样

使用Scipy,我想按照一定的概率密度随机抽取一个样本。我考虑的概率密度函数是在实线上定义的,它取决于我在 numpy.array 中重新组合的 k 个参数,记为形状 (1,k) 的 X。

import scipy.stats as st
import numpy as np
import numpy.random as npr

class CustomGaussian(st.rv_continuous):
    def _argcheck(self,X):
        return True
    def _pdf(self,x,X):
        return (1+np.prod(X*np.exp(-X**2 / 2.))*x*np.exp(-x**2 / 2.))*(np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi))

k=3
CustomGaussian_Sample = CustomGaussian(name='CustomGaussian_Sample',shapes='X')
X=npr.uniform(0,1,size=(1,k))
print(CustomGaussian_Sample.rvs(shapes='X'))

当我只想要一个单一的实现时,它会返回一个形状为 (,k) 的数组,就像经典的单变量分布一样,但有 d 个参数。有什么建议吗?

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