sumdiff += (global_sigma - old_global_sigma) * (global_sigma - old_global_sigma);
if (sumdiff < EPSILON) {
//fprintf(stderr, "Converged after %d iterations. Stopping.\n", j);
- printf("%d 0 -1\n", j + 1);
+ printf("aux_param num_iterations %d\n", j + 1);
break;
}
}
compute_mu_uncertainty(mu, players);
dump_scores(players, mu, mu_stddev, num_players);
//fprintf(stderr, "Optimal sigma: %f (two-player: %f)\n", sigma[0], sigma[0] * sqrt(2.0f));
- printf("%f 0 -2\n", global_sigma / sqrt(2.0f));
- printf("%f 0 -3\n", prior_sigma);
+ printf("aux_param score_stddev %f\n", global_sigma / sqrt(2.0f));
+ printf("aux_param rating_prior_stddev %f\n", prior_sigma);
float total_logl = compute_total_logl(mu, num_players);
- printf("%f 0 -4\n", total_logl);
+ printf("aux_param total_log_likelihood %f\n", total_logl);
#endif
}
sub get_auxillary_parameters {
my ($dbh) = @_;
- my %aux_parm_names = {
- -1 => num_iterations,
- -2 => score_stddev,
- -3 => rating_prior_stddev,
- -4 => total_log_likelihood,
- };
-
- my $q = $dbh->prepare('SELECT * FROM ratings WHERE id < 0');
+ my $q = $dbh->prepare('SELECT * FROM aux_params');
$q->execute;
my $aux_parms = {};
while (my $ref = $q->fetchrow_hashref) {
- my $id = $ref->{'id'};
- $aux_parms->{$aux_parm_names{$id}} = $ref->{'rating'};
+ $aux_parms->{$ref->{'id'}} = $ref->{'value'};
}
return $aux_parms;
}
}
sub train_model {
- my ($filename, $ratings, $covariances) = @_;
+ my ($filename, $ratings, $covariances, $aux_params) = @_;
open RATINGS, "$config::base_dir/bayeswf < $filename |"
or die "bayeswf: $!";
my @x = split;
if ($x[0] eq 'covariance') {
push @$covariances, (join("\t", @x[1..3]));
+ } elsif ($x[0] eq 'aux_param') {
+ push @$aux_params, ("nb-NO" . "\t" . $x[1] . "\t" . $x[2]);
} else {
push @$ratings, ($x[2] . "\t" . $x[0] . "\t" . $x[1]);
}
my @ratings = ();
my @covariances = ();
-train_model($tmpnam, \@ratings, \@covariances);
+my @aux_params = ();
+train_model($tmpnam, \@ratings, \@covariances, \@aux_params);
unlink($tmpnam);
+$dbh->do('TRUNCATE aux_params');
+$dbh->do('COPY aux_params ( kultur, id, value ) FROM STDIN');
+$dbh->pg_putcopydata(join("\n", @aux_params));
+$dbh->pg_putcopyend();
+
$dbh->do('TRUNCATE ratings');
$dbh->do('COPY ratings ( id, rating, rating_stddev ) FROM STDIN');
$dbh->pg_putcopydata(join("\n", @ratings));