- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我无法将多元高斯分布拟合到我的数据集,更具体地说,是找到一个均值向量(或多个均值向量)。我的数据集是一个 N x 8 矩阵,目前我正在使用此代码:
muVector = np.mean(Xtrain, axis=0)
其中 Xtrain 是我的训练数据集。
对于协方差,我使用任意方差值 (.5) 构建它并执行以下操作:
covariance = np.dot(.5, np.eye(N,N)
其中 N 是观测值的数量。
但是当我构建我的 Phi 矩阵时,我得到的全是零。这是我的代码:
muVector = np.mean(Xtrain, axis=0)
# get covariance matrix from Xtrain
cov = np.dot(var, np.eye(N,N))
cov = np.linalg.inv(cov)
# build Xtrain Phi
Phi = np.ones((N,M))
for row in range(N):
temp = Xtrain[row,:] - muVector
temp.shape = (1,M)
temp = np.dot((-.5), temp)
temp = np.dot(temp, cov)
temp = np.dot(temp, (Xtrain[row,:] - muVector))
Phi[row,:] = np.exp(temp)
感谢任何帮助。我想我可能必须使用 np.random.multivariate_normal()?但我不知道在这种情况下如何使用它。
最佳答案
我认为“Phi”是指您要估计的概率密度函数 (pdf)。在这种情况下,协方差矩阵应为 MxM,输出 Phi 将为 Nx1:
# -*- coding: utf-8 -*-
import numpy as np
N = 1024
M = 8
var = 0.5
# Creating a Xtrain NxM observation matrix.
# Its muVector is [0, 1, 2, 3, 4, 5, 6, 7] and the variance for all
# independent random variables is 0.5.
Xtrain = np.random.multivariate_normal(np.arange(8), np.eye(8,8)*var, N)
# Estimating the mean vector.
muVector = np.mean(Xtrain, axis=0)
# Creating the estimated covariance matrix and its inverse.
cov = np.eye(M,M)*var
inv_cov = np.linalg.inv(cov)
# Normalization factor from the pdf.
norm_factor = 1/np.sqrt((2*np.pi)**M * np.linalg.det(cov))
# Estimating the pdf.
Phi = np.ones((N,1))
for row in range(N):
temp = Xtrain[row,:] - muVector
temp.shape = (1,M)
temp = np.dot(-0.5*temp, inv_cov)
temp = np.dot(temp, (Xtrain[row,:] - muVector))
Phi[row] = norm_factor*np.exp(temp)
或者,您可以使用 scipy.stats.multivariate_normal
中的 pdf
方法:
# -*- coding: utf-8 -*-
import numpy as np
from scipy.stats import multivariate_normal
N = 1024
M = 8
var = 0.5
# Creating a Xtrain NxM observation matrix.
# Its muVector is [0, 1, 2, 3, 4, 5, 6, 7] and the variance for all
# independent random variables is 0.5.
Xtrain = np.random.multivariate_normal(np.arange(8), np.eye(8,8)*var, N)
# Estimating the mean vector.
muVector = np.mean(Xtrain, axis=0)
# Creating the estimated covariance matrix.
cov = np.eye(M,M)*var
Phi2 = multivariate_normal.pdf(Xtrain, mean=muVector, cov=cov)
Phi
和 Phi2
输出数组都将相等。
关于python - 计算多元正态分布python的均值向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402167/
我有一个数字列表,其中包含这些数字的样本平均值和标准差。现在我正在尝试找出平均值+-SD、平均值+-2SD 和平均值+-3SD 中的数字。例如,在mean+-SD部分,我编写了这样的代码: ND1 =
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: erf(x) and math.h Best library for statistics in C++?
我正在尝试模拟球迷到达体育场。系统本身,我相信不会有问题,但是,粉丝的到来是一个正态分布。 我的问题是: 我有一个特定的到达时间,比如 100 分钟和 1000 个粉丝,我需要在该分布之后的某个时间生
在 Julia 中,有人实现了正态分布 pdf 或 cdf 来支持任意精度的 BigFloats。 例如,此代码返回 0.0,而实际上这些值应该略有不同。 x = parse(BigFloat, "2
给定具有上限和下限误差的平均值,计算分割正态分布的最佳方法是什么? 到目前为止我已经: from random import choice, gauss def random_split_normal
我希望用户指定分布的范围 delta、sigma 以及它应该产生的随机值的数量。但是在 Iron Python 中生成具有正态分布的随机值的最佳方法是什么?我在 NumPy 中找到了一个可以执行此操作
我的说明:编写一个程序,开始询问用户正态分布的均值 u 和标准差 s(参见 wiki article) 程序然后要求 N,然后要求 N 个值 x。对于每个 x,它都会将 f(x) 写到屏幕上。请注意,
通用的 Accept 拒绝算法和往常一样。 1 从 Unif[0,1] 生成 U 1 ,U 2 ,U 3 2 X ← −log(U 1 ) 3 if U 2 > exp(−0.5(X − 1) 2 )
我需要计算两条曲线之间的面积。我有很多数据,所以我想以编程方式进行。 基本上,我总是有 2 个正态分布,根据平均值和标准差计算得出。然后我想计算它们相交的程度。这是一个 example我的意思,还有一
我想知道 JavaScript 函数 Math.random 是否使用正态分布(相对于均匀分布)。 如果不是,我怎样才能得到使用正态分布的数字?对于创建随机正态分布数字的算法,我尚未在 Interne
我想在 d3.js 中创建正态分布图(钟形曲线)。 像这样[ http://statwiki.ucdavis.edu/@api/deki/files/73/a9f781e1b0891ceedd50cd
我的教授正在模拟客户到达银行的情况。它表示客户到达时遵循均值 3.5 和标准偏差 1.3 的正态分布。 问题是我很难理解为什么使用这段代码。我相信他提供的代码正在接收一个流、平均值和标准差来生成随机数
我正在生成一些随机数并出现可疑行为。这是我的代码: // initialized earlier... in the constructor of a class boost::mt1
用 ruby 生成正态分布随机数的代码是什么? (注意:我回答了我自己的问题,但我会等几天再接受,看看是否有人有更好的答案。) 编辑: 为此,我查看了两次搜索产生的 SO 上的所有页面: +“正态
我尝试编写 R 代码来查找 mu s.t. 的值。正态分布满足概率 P(N(mu, 1)>1.96)=0.95 (即 P(Z>1.96)=0.95 其中 Z~ N(mu, 1) 和 mu 是我想要得到
我是一名优秀的程序员,十分优秀!