Example #1
0
                             lengthscale=1.0,
                             white=0.01,
                             input_scaling=IS_ARD)
    for i in range(len(weight_struct))
]
klink_f = [1.0 for i in range(node_dim)]
kernlink = klink_w + klink_f

# create 'within' kernel
# kern
k_w = [
    kernels.CompositeKernel('add', [
        kernels.RadialBasisSlice(Xtr.shape[1],
                                 active_dims=list(range(Xtr.shape[1])),
                                 std_dev=1.0,
                                 white=0.01,
                                 input_scaling=IS_ARD),
        kernels.PeriodicSlice(
            1, active_dims=[0], lengthscale=0.5, std_dev=1.0, period=2.0)
    ]) for i in range(len(weight_struct))
]
k_f = [
    kernels.RadialBasisSlice(1,
                             active_dims=[0],
                             std_dev=1.0,
                             white=0.01,
                             input_scaling=IS_ARD) for i in range(node_dim)
]

kern = k_w + k_f
Example #2
0
# create link inputs (link inputs used repeatedly but can have link input per group)
# permute to bring diagonal to first position
link_inputs = [[] for _ in range(output_dim)]
for i in range(output_dim):
    idx = list(range(d_link.shape[0]))
    link_inputs[i] = d_link[[idx.pop(i)] + idx, :]

link_inputs = link_inputs + [1.0 for i in range(output_dim)
                             ]  # for full W row blocks, independent nodes

# create 'between' kernel list
klink_rows = [
    kernels.CompositeKernel('mul', [
        kernels.RadialBasis(
            2, std_dev=2.0, lengthscale=1.0, white=0.01, input_scaling=IS_ARD),
        kernels.CompactSlice(
            2, active_dims=[0, 1], lengthscale=2.0, input_scaling=IS_ARD)
    ]) for i in range(output_dim)
]
klink_f = [1.0 for i in range(node_dim)]

kernlink = klink_rows + klink_f

# create 'within' kernel
# kern
lag_active_dims_s = [[] for _ in range(output_dim)]
for i in range(output_dim):
    lag_active_dims_s[i] = list(range(lag_dim * i, lag_dim * (i + 1)))

k_rows = [
    kernels.CompositeKernel('mul', [
Example #3
0
    locfeat_active_dims[i] = list(
        range(
            len(commonfeats) + locfeat_dim * i,
            len(commonfeats) + locfeat_dim * (i + 1)))

kf = [[] for _ in range(node_dim)]
# Qg != P configuration
if output_dim != node_dim:
    for i in range(node_dim):
        # cluster airport features in each node
        cl_dims = list(np.where(loc_clustID == i)[0])
        kf[i] = kernels.CompositeKernel('add', [
            kernels.RadialBasisSlice(len(cl_dims),
                                     active_dims=cl_dims,
                                     std_dev=0.5,
                                     lengthscale=0.5,
                                     white=0.01,
                                     input_scaling=IS_ARD),
            kernels.PeriodicSlice(
                1, active_dims=[0], lengthscale=0.0, std_dev=0.5, period=1.0)
        ])
else:
    # Qg = P configuration
    for i in range(output_dim):
        kf[i] = kernels.CompositeKernel('add', [
            kernels.RadialBasisSlice(locfeat_dim,
                                     active_dims=locfeat_active_dims[i],
                                     std_dev=0.5,
                                     lengthscale=0.5,
                                     white=0.01,
                                     input_scaling=IS_ARD),
            kernels.PeriodicSlice(
for i in range(output_dim):
    row = list(range(i, i+output_dim*(node_dim-1)+1, output_dim))
    row_0 = row.pop(i)   # bring diag to pivot position
    weight_struct[i] = [row_0] + row

nodes = [[x] for x in list(range(output_dim * node_dim, output_dim * node_dim + output_dim))]
block_struct = weight_struct + nodes

# create 'within' kernel
# kern
lag_active_dims_s = [ [] for _ in range(output_dim)]
for i in range(output_dim):
    lag_active_dims_s[i] = list(range(lag_dim*i, lag_dim*(i+1)))

k_rows = [kernels.CompositeKernel('mul',[kernels.RadialBasisSlice(lag_dim, active_dims=lag_active_dims_s[i],
                                                    std_dev = 1.0, white = 0.01, input_scaling = IS_ARD),
                                                    kernels.PeriodicSliceFixed(1, active_dims=[Xtr.shape[1]-1],
                                                    lengthscale=0.5, std_dev=1.0, period = 144) ])
                                                    for i in range(output_dim)]
k_f = [kernels.RadialBasisSlice(lag_dim, active_dims=lag_active_dims_s[i], std_dev = 1.0, white = 0.01, input_scaling = IS_ARD)
    for i in range(output_dim)]

kern = k_rows + k_f

print('len kern ', len(kern))
print('no. groups = ', len(block_struct), 'no. latent functions =', len([i for b in block_struct for i in b]))
print('number latent functions', node_dim*(output_dim+1))

likelihood = likelihoods.CovaryingRegressionNetwork(output_dim, node_dim, std_dev = 0.2)  # p, q, lik_noise
print("likelihood and kernels set")
Z = init_z(data.X, NUM_INDUCING)
print('inducing points set')
Example #5
0
lag_dim = 2
startsite = 0 # ignore for mtg

# extract dataset
d = get_inputs()
Ytr, Yte, Xtr, Xte = d['Ytr'], d['Yte'], d['Xtr'], d['Xte']
Ytr, Yte = Ytr.reshape(Ytr.shape[0],1), Yte.reshape(Yte.shape[0],1)

data = datasets.DataSet(Xtr.astype(np.float32), Ytr.astype(np.float32), shuffle=False)
test = datasets.DataSet(Xte.astype(np.float32), Yte.astype(np.float32), shuffle=False)
print("dataset created")

klags = kernels.RadialBasisSlice(lag_dim, active_dims=[0,1], lengthscale=0.01,
                                        std_dev = 0.0, input_scaling = IS_ARD, white = 0.05)
kspat = kernels.CompositeKernel('mul',[kernels.RadialBasisSlice(2, active_dims=[2,3],
                                        std_dev=2.0, lengthscale=0.5, white=0.05, input_scaling = IS_ARD),
                                        kernels.CompactSlice(2, active_dims=[2,3], lengthscale = 2.0,
                                        white = 0.05, input_scaling = IS_ARD)] )

ktime = kernels.PeriodicSliceFixed(1, active_dims=[Xtr.shape[1]-1], lengthscale=0.5,
                                        std_dev=1.5, period=144, white = 0.05)
k_spattemp = kernels.CompositeKernel('mul', kernel_inputs=[kspat, ktime])
kern = [kernels.CompositeKernel('mul', kernel_inputs=[klags, k_spattemp])]
likelihood = likelihoods.Gaussian(0.1)
print("likelihood and kernels set")

Z = init_z(data.X, NUM_INDUCING)
m = mmgp.IndependentMMGP(output_dim, likelihood, kern, Z, num_components=NUM_COMPONENTS,
                                                                        diag_post=DIAG_POST,
                                                                        sparse_post=SPARSE_POST,
                                                                        num_samples=NUM_SAMPLES,
                                                                        predict_samples=PRED_SAMPLES)
Example #6
0
# define active dims for each airport, then group after
for i in range(output_dim):
    locfeat_active_dims[i] = list(
        range(
            len(commonfeats) + locfeat_dim * i,
            len(commonfeats) + locfeat_dim * (i + 1)))

kW = [[] for _ in range(output_dim)]
for i in range(output_dim):
    k_rows = [
        kernels.CompositeKernel('add', [
            kernels.RadialBasisSlice(
                locfeat_dim + len(commonfeats),
                active_dims=commonfeats + locfeat_active_dims[i],
                std_dev=1.0,
                lengthscale=0.5,
                white=0.01,
                input_scaling=IS_ARD),
            kernels.PeriodicSlice(
                1, active_dims=[0], lengthscale=0.0, std_dev=0.5, period=1.0)
        ]) for j in range(node_dim)
    ]
    kW[i] = k_rows
kW = [kW[i][j] for j in range(node_dim)
      for i in range(output_dim)]  # reorganise to column input order

kf = [
    kernels.RadialBasisSlice(1,
                             active_dims=[0],
                             std_dev=1.0,
                             white=0.01,