def makeDataset(K=5,
                Nk=100,
                Nvec=None,
                VarMajor=1.0,
                VarMinorRatio=1.0 / 25,
                **kwargs):
    K = int(K)
    if Nvec is None:
        Nk = int(Nk)
        Nvec = Nk * np.ones(K)
    elif isinstance(Nvec, str):
        Nvec = Nvec.split(',')
    Nvec = np.asarray(Nvec, dtype=np.int32)

    # Create basic 2D cov matrix with major axis much longer than minor one
    VarMajor = float(VarMajor)
    VarMinorRatio = float(VarMinorRatio)
    SigmaBase = np.asarray([[VarMajor, 0], [0, VarMinorRatio * VarMajor]])

    # Create several Sigmas by rotating this basic covariance matrix
    Z = [None for k in range(K)]
    X = [None for k in range(K)]
    for k in range(K):
        PRNG = np.random.RandomState(k)
        Sigma_k = rotateCovMat(SigmaBase, k * np.pi / K)
        Z[k] = k * np.ones(Nvec[k])
        X[k] = PRNG.multivariate_normal([0, 0], Sigma_k, size=Nvec[k])

    Z = np.hstack(Z)
    X = np.vstack(X)
    return bnpy.data.XData(X=X, TrueZ=Z)
def makeDataset(K=5, Nk=100, Nvec=None, **kwargs):
    K = int(K)
    if Nvec is None:
        Nk = int(Nk)
        Nvec = Nk * np.ones(K)
    elif isinstance(Nvec, str):
        Nvec = Nvec.split(',')
    Nvec = np.asarray(Nvec, dtype=np.int32)

    Z = [None for k in range(K)]
    X = [None for k in range(K)]
    for k in range(K):
        PRNG = np.random.RandomState(k)
        mu_k = 10 * PRNG.randn(2)
        Sigma_k = np.diag(PRNG.gamma(5, size=2) / 5.0)
        Sigma_k = rotateCovMat(Sigma_k, np.pi * PRNG.rand())
        Z[k] = k * np.ones(Nvec[k])
        X[k] = PRNG.multivariate_normal(mu_k, Sigma_k, size=Nvec[k])

    Z = np.hstack(Z)
    X = np.vstack(X)
    return bnpy.data.XData(X=X, TrueZ=Z)
Example #3
0
# Place means evenly spaced around a circle
Rad = 1.0
ts = np.linspace(0, 2 * np.pi, K + 1)
ts = ts[:-1]
Mu = np.zeros((K, D))
Mu[:, 0] = np.cos(ts)
Mu[:, 1] = np.sin(ts)

# Create basic 2D cov matrix with major axis much longer than minor one
V = 1.0 / 16.0
SigmaBase = np.asarray([[V, 0], [0, V / 100.0]])

# Create several Sigmas by rotating this basic covariance matrix
Sigma = np.zeros((K, D, D))
for k in xrange(K):
    Sigma[k] = rotateCovMat(SigmaBase, k * np.pi / 4.0)

# Precompute cholesky decompositions
cholSigma = np.zeros(Sigma.shape)
for k in xrange(K):
    cholSigma[k] = scipy.linalg.cholesky(Sigma[k])


###########################################################  Module util functions
def sample_data_from_comp(k, Nk, PRNG):
    return Mu[k, :] + np.dot(cholSigma[k].T, PRNG.randn(D, Nk)).T


def get_short_name():
    ''' Return short string used in filepaths to store solutions
  '''
Example #4
0
# Place means evenly spaced around a circle
Rad = 1.0
ts = np.linspace(0, 2*np.pi, K+1)
ts = ts[:-1]
Mu = np.zeros( (K,D))
Mu[:,0] = np.cos(ts)
Mu[:,1] = np.sin(ts)

# Create basic 2D cov matrix with major axis much longer than minor one
V = 1.0/16.0
SigmaBase = np.asarray([[ V, 0], [0, V/100.0]])

# Create several Sigmas by rotating this basic covariance matrix
Sigma = np.zeros( (K,D,D) )
for k in xrange(K):
  Sigma[k] = rotateCovMat(SigmaBase, k*np.pi/4.0)

# Precompute cholesky decompositions
cholSigma = np.zeros( Sigma.shape )
for k in xrange( K ):
  cholSigma[k] = scipy.linalg.cholesky( Sigma[k] )

###########################################################  Module util functions
def sample_data_from_comp( k, Nk, PRNG ):
  return Mu[k,:] + np.dot(cholSigma[k].T, PRNG.randn(D, Nk) ).T

def get_short_name( ):
  ''' Return short string used in filepaths to store solutions
  '''
  return 'AsteriskK8'