Пример #1
0
net.new_edge_covariate('x').from_binary_function_ind(f_x)

data_model = NonstationaryLogistic()
data_model.beta['x'] = theta
for name, block_theta in [('ll', 4.0), ('rr', 3.0), ('lr', -2.0)]:
    data_model.beta[name] = block_theta
alpha_norm(net, alpha_sd)
data_model.match_kappa(net, ('row_sum', 2))
net.generate(data_model)
net.show_heatmap()
net.offset_extremes()

fit_base_model = NonstationaryLogistic()
fit_base_model.beta['x'] = None
fit_model = Blockmodel(fit_base_model, 2)
#fit_model.base_model.fit = fit_model.base_model.fit_conditional

# Initialize block assignments
net.new_node_covariate_int('z')
if from_truth:
    net.node_covariates['z'][:] = net.node_covariates['value'][:]
else:
    net.node_covariates['z'][:] = np.random.random(N) < 0.5

# Calculate NLL at initialized block assignments
fit_model.fit_sem(net, cycles=1, sweeps=0, use_best=False, store_all=True)
baseline_nll = fit_model.sem_trace[0][0]

nll_trace = []
z_trace = np.empty((steps, N))
Пример #2
0
for b in range(params['B']):
    name = 'x_%d' % b
    covariates.append(name)

    data_base_model.beta[name] = np.random.normal(0, params['beta_sd'])

    def f_x(i_1, i_2):
        return np.random.uniform(-np.sqrt(3), np.sqrt(3))

    net.new_edge_covariate(name).from_binary_function_ind(f_x)

# Initialize data (block)model from base model
class_probs = np.random.dirichlet(np.repeat(params['class_conc'], params['K']))
z = np.where(np.random.multinomial(1, class_probs, params['N']) == 1)[1]
net.new_node_covariate_int('z_true')[:] = z
data_model = Blockmodel(data_base_model, params['K'], 'z_true')
Theta = np.random.normal(params['Theta_mean'], params['Theta_sd'],
                         (params['K'], params['K']))
Theta += params['Theta_diag'] * np.identity(params['K'])
Theta -= np.mean(Theta)
data_model.Theta = Theta

net.generate(data_model)
if params['plot_network']:
    net.show_heatmap('z_true')

# Initialize fitting model
fit_base_model = StationaryLogistic()
for c in covariates:
    fit_base_model.beta[c] = None
fit_model = Blockmodel(fit_base_model, params['fit_K'])
np.random.seed(137)

# Report parameters for the run
print 'Parameters:'
for field in params:
    print '%s: %s' % (field, str(params[field]))

# Initialize political blogs network from file. The "value" covariate
# is the ground truth membership to the left-leaning (0) or
# right-leaning (1) class.
net = network_from_file_gml('data/polblogs/polblogs.gml', ['value'])
net.new_node_covariate_int('truth')[:] = net.node_covariates['value'][:]

# Initialize fitting model
fit_base_model = StationaryLogistic()
fit_model = Blockmodel(fit_base_model, params['fit_K'])
if params['fit_nonstationary']:
    n_fit_base_model = NonstationaryLogistic()
    n_fit_model = Blockmodel(n_fit_base_model, params['fit_K'])
net.new_node_covariate_int('z')
if params['blockmodel_fit_method'] == 'kl':
    fit_model.fit = fit_model.fit_kl
    n_fit_model.fit = n_fit_model.fit_kl

# Set up recording of results from experiment
s_results = Results(params['sub_sizes'], params['sub_sizes'],
                    params['num_reps'], 'Stationary fit')
add_array_stats(s_results)
def class_mismatch(n):
    truth = n.node_covariates['truth'][:]
    estimated = n.node_covariates['z'][:]
#!/usr/bin/env python

from Models import Stationary, Blockmodel, FixedMargins
from Network import Network

net = Network(100)
net.new_node_covariate_int('r')[:] = 20
net.new_node_covariate_int('c')[:] = 20
net.new_node_covariate_int('z')[:] = ([0] * 50) + ([1] * 50)

base_model = Blockmodel(Stationary(),2)
base_model.Theta[0,0] = 3.0
base_model.Theta[0,1] = -1.0
base_model.Theta[1,0] = -2.0
base_model.Theta[1,1] = 0.0
model = FixedMargins(base_model)

net.generate(base_model)
net.show_heatmap('z')

net.generate(model)
net.show_heatmap('z')

Пример #5
0
#!/usr/bin/env python

from Models import Stationary, Blockmodel, FixedMargins
from Network import Network

net = Network(100)
net.new_node_covariate_int('r')[:] = 20
net.new_node_covariate_int('c')[:] = 20
net.new_node_covariate_int('z')[:] = ([0] * 50) + ([1] * 50)

base_model = Blockmodel(Stationary(), 2)
base_model.Theta[0, 0] = 3.0
base_model.Theta[0, 1] = -1.0
base_model.Theta[1, 0] = -2.0
base_model.Theta[1, 1] = 0.0
model = FixedMargins(base_model)

net.generate(base_model)
net.show_heatmap('z')

net.generate(model)
net.show_heatmap('z')
for b in range(params['B']):
    name = 'x_%d' % b
    covariates.append(name)

    data_base_model.beta[name] = np.random.normal(0, params['beta_sd'])

    def f_x(i_1, i_2):
        return np.random.uniform(-np.sqrt(3), np.sqrt(3))
    net.new_edge_covariate(name).from_binary_function_ind(f_x)

    
# Initialize data (block)model from base model
class_probs = np.random.dirichlet(np.repeat(params['class_conc'], params['K']))
z = np.where(np.random.multinomial(1, class_probs, params['N']) == 1)[1]
net.new_node_covariate_int('z_true')[:] = z
data_model = Blockmodel(data_base_model, params['K'], 'z_true')
Theta = np.random.normal(params['Theta_mean'], params['Theta_sd'],
                         (params['K'],params['K']))
Theta += params['Theta_diag'] * np.identity(params['K'])
Theta -= np.mean(Theta)
data_model.Theta = Theta

net.generate(data_model)
if params['plot_network']:
    net.show_heatmap('z_true')

# Initialize fitting model
fit_base_model = StationaryLogistic()
for c in covariates:
    fit_base_model.beta[c] = None
fit_model = Blockmodel(fit_base_model, params['fit_K'])
        
data_model = NonstationaryLogistic()
data_model.beta['x'] = theta
for name, block_theta in [('ll', 4.0),
                          ('rr', 3.0),
                          ('lr', -2.0)]:
    data_model.beta[name] = block_theta
alpha_norm(net, alpha_sd)
data_model.match_kappa(net, ('row_sum', 2))
net.generate(data_model)
net.show_heatmap()
net.offset_extremes()

fit_base_model = NonstationaryLogistic()
fit_base_model.beta['x'] = None
fit_model = Blockmodel(fit_base_model, 2)
#fit_model.base_model.fit = fit_model.base_model.fit_conditional

# Initialize block assignments
net.new_node_covariate_int('z')
if from_truth:
    net.node_covariates['z'][:] = net.node_covariates['value'][:]
else:
    net.node_covariates['z'][:] = np.random.random(N) < 0.5

# Calculate NLL at initialized block assignments
fit_model.fit_sem(net, cycles = 1, sweeps = 0,
                  use_best = False, store_all = True)
baseline_nll = fit_model.sem_trace[0][0]

nll_trace = []