标签: probability-distribution

log_prob 有什么作用?

在一些(例如机器学习)库中,我们可以找到log_prob函数。它有什么作用,它与常规服用有何不同log有何?

例如,这段代码的目的是什么:

dist = Normal(mean, std)
sample = dist.sample()
logprob = dist.log_prob(sample)
Run Code Online (Sandbox Code Playgroud)

随后,为什么我们要先取一个日志,然后对结果值取幂,而不是直接评估它:

prob = torch.exp(dist.log_prob(sample))
Run Code Online (Sandbox Code Playgroud)

probability-distribution pytorch

15
推荐指数
4
解决办法
9777
查看次数

dnorm如何运作?

我是统计学和R的新手.也许这是一个非常微不足道的问题,但我真的不明白这是如何工作的.

假设我使用dnorm(5, 0, 2.5).那是什么意思?

我看到了一些资源,他们告诉我这个函数计算密度曲线中点的高度.

现在我再次读到连续分布中数字的确切概率为0.所以,我的问题是,如果我能找出某个值的高度或概率,那怎么会是0呢?

我知道我混淆了一些概念.但我无法找到我错的地方.如果你有空的时间让我理解这一点,那将是很棒的.提前致谢.

statistics r probability-distribution

6
推荐指数
1
解决办法
1257
查看次数

如何获取gensim LDA中所有文档的document_topics分布?

我是 python 新手,我需要构建一个 LDA 项目。做了一些预处理步骤后,这是我的代码:

dictionary = Dictionary(docs)
corpus = [dictionary.doc2bow(doc) for doc in docs]

from gensim.models import LdaModel
num_topics = 10
chunksize = 2000
passes = 20
iterations = 400
eval_every = None
temp = dictionary[0]
id2word = dictionary.id2token
model = LdaModel(corpus=corpus, id2word=id2word, chunksize=chunksize, \
                       alpha='auto', eta='auto', \
                       random_state=42, \
                       iterations=iterations, num_topics=num_topics, \
                       passes=passes, eval_every=eval_every)
Run Code Online (Sandbox Code Playgroud)

我想获得文档的主题分布,所有文档并获得主题分布的 10 概率,但是当我使用:

get_document_topics = model.get_document_topics(corpus)
print(get_document_topics)
Run Code Online (Sandbox Code Playgroud)

输出只出现

<gensim.interfaces.TransformedCorpus object at 0x000001DF28708E10>
Run Code Online (Sandbox Code Playgroud)

如何获得文档的主题分布?

python-3.x lda gensim topic-modeling probability-distribution

6
推荐指数
1
解决办法
4451
查看次数

理解pytorch中正态分布的log_prob

我目前正在尝试从具有连续动作空间的 openAi 健身房环境中解决 Pendulum-v0。因此,我需要使用正态分布来对我的行为进行采样。我不明白的是 log_prob 使用时的维度:

import torch
from torch.distributions import Normal 

means = torch.tensor([[0.0538],
        [0.0651]])
stds = torch.tensor([[0.7865],
        [0.7792]])

dist = Normal(means, stds)
a = torch.tensor([1.2,3.4])
d = dist.log_prob(a)
print(d.size())
Run Code Online (Sandbox Code Playgroud)

我期待一个大小为 2 的张量(每个动作一个 log_prob),但它输出一个大小为(2,2)的张量。

但是,当对离散环境使用分类分布时,log_prob 具有预期大小:

logits = torch.tensor([[-0.0657, -0.0949],
        [-0.0586, -0.1007]])

dist = Categorical(logits = logits)
a = torch.tensor([1, 1])
print(dist.log_prob(a).size())
Run Code Online (Sandbox Code Playgroud)

给我一个大小为(2)的张量。

为什么正态分布的 log_prob 大小不同?

reinforcement-learning probability-distribution pytorch

6
推荐指数
1
解决办法
3777
查看次数

如何生成随机"足够"的随机整数?

我正在尝试解决Project Euler中的第280个问题,为此我编写了以下模拟;

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>

/* Directions

    1
2       3
    4
*/

int grid[5][5] = {
    {0, 0, 0, 0, 2},
    {0, 0, 0, 0, 2},
    {0, 0, 0, 0, 2},
    {0, 0, 0, 0, 2},
    {0, 0, 0, 0, 2}
};

int InitPos[2] = {2, 2};

int MaxExp = 5000000;

bool Success = false;
int StepCount = 0;
int ExpNumber = 1;
int AntsBag = 0;
void Init();
void CarryFood(int * pos); …
Run Code Online (Sandbox Code Playgroud)

random performance probability probability-density probability-distribution

5
推荐指数
1
解决办法
75
查看次数

如何使用预定义的概率分布生成随机数?

我想在python(using numpy)中实现一个函数,它接受一个数学函数(p(x) = e^(-x)例如下面的例子)作为输入并生成随机数,这些随机数根据数学函数的概率分布进行分配.我需要绘制它们,所以我们可以看到分布.

实际上我需要一个随机数生成器函数来完成以下两个数学函数作为输入,但如果它可以采取其他函数,为什么不:

1)p(x) = e^(-x)
2)g(x) = (1/sqrt(2*pi)) * e^(-(x^2)/2)

有没有人知道如何在python中这样做?

python numpy probability probability-density probability-distribution

5
推荐指数
2
解决办法
1341
查看次数

PyTorch中查询任意点离散分布的CDF

我有一个离散分布说x=[1,2,4,5]; P(x)=[0.1, 0.2, 0.3, 0.4]。CDF 由 给出F(x)=[0.1, 0.3, 0.6, 1]。这里PF数组表示给定 处的相应值x。就我而言,实际上P并不是离散分布,而是分段均匀分布x \in [1, 9],即x \in [1, 2], P(x)=0.1; x \in [2, 4], P(x)=0.1; x \in [4, 5], P(x)=0.3; x \in [5,9], P(x)=0.1 我想在不同点查询该分布的 CDF,例如y=[0.5, 1.6, 2.3, 3.4, 4.5, 5.7, 8.9]。现在F(y)=[0, 0.06, 0.13, 0.24, 0.45, 0.67, 0.99]。有没有一种方法(某些库函数)可以F(y)快速获得而无需手动计算?

就我而言,xP是 shape 的值列表(二维数组)的数组(batch_size, num_bins)y也是 shape …

python vectorization probability-distribution pytorch cumulative-distribution-function

5
推荐指数
0
解决办法
45
查看次数

如何从Python中的正态概率密度函数中找到概率?

基本上,我使用平均值和标准差值绘制了一条正态曲线。y 轴给出概率密度。

如何找到 x 轴上某个值“x”的概率?有没有相关的 Python 函数或者如何编码?

python statistics probability probability-density probability-distribution

4
推荐指数
1
解决办法
5493
查看次数

为什么“dnorm”不总结为一个概率?

这可能是关于 R 中“dnorm”函数的一些基本/基本问题。假设我通过 z 变换创建了一些 z 分数并尝试从“dnorm”中得到总和。

 data=c(232323,4444,22,2220929,22323,13)
 z=(data-mean(data))/sd(data)
 result=dnorm(z,0,1)
 sum(result)
 [1] 1.879131
Run Code Online (Sandbox Code Playgroud)

如上所述,“dnorm”的总和既不是 1 也不是 0。

然后假设即使在我的 z 转换中我也使用零均值和一个标准差。

 data=c(232323,4444,22,2220929,22323,13)
 z=(data-0)/1
 result=dnorm(z,0,1)
 sum(result)
 [1] 7.998828e-38
Run Code Online (Sandbox Code Playgroud)

我仍然没有得到 0 或 1 的总和。

如果我的目的是使概率总和等于 1,因为我将需要进一步使用,您建议使用“dnorm”甚至使用其他 PDF 函数的方法是什么?

r normal-distribution probability-density probability-distribution

3
推荐指数
1
解决办法
1414
查看次数

Rcpp中二项式似然的快速评估

我需要非常快速地评估大量二项式似然。因此,我正在考虑在 Rcpp 中实现这一点。一种方法如下:

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

using namespace Rcpp;

// [[Rcpp::export]]
NumericVector eval_likelihood(arma::vec Yi,
                              arma::vec Ni,
                              arma::vec prob){

  // length of vector
  int N = prob.n_rows;

  // storage for evaluated log likelihoods
  NumericVector eval(N);

  for(int ii = 0; ii < N; ii++){

  int y = Yi(ii); // no. of successes
  int n = Ni(ii); // no. of trials
  double p = prob(ii); // success probability

  eval(ii) = R::dbinom(y,n,p,true); // argument 4 is set to true to return log-likelihood

  } …
Run Code Online (Sandbox Code Playgroud)

r rcpp probability-distribution log-likelihood

3
推荐指数
1
解决办法
125
查看次数