]> git.sesse.net Git - wloh/blobdiff - www/rating.pl
Train one model (with its own aux parms) per locale.
[wloh] / www / rating.pl
index 40e91656cced3c3b8d6c57ca92aae3bf44e1be4e..5eb822807d1859b7b013c6f17960f83de2c2aacc 100755 (executable)
@@ -20,19 +20,16 @@ $dbh->{RaiseError} = 1;
 
 binmode STDOUT, ':utf8';
 
-# Find auxillary parameters.
-my %params = ();
-my $q = $dbh->prepare('SELECT * FROM ratings WHERE id < 0');
-$q->execute;
-while (my $ref = $q->fetchrow_hashref) {
-       $params{$ref->{'id'}} = $ref->{'rating'};
-}
-my $match_stddev = $params{-2} * sqrt(2.0);
+my $cgi = CGI->new;
+my $locale = wloh_common::get_locale($cgi);
+
+my $aux_parms = wloh_common::get_auxillary_parameters($dbh, $locale);
+my $match_stddev = $aux_parms->{'score_stddev'} * sqrt(2.0);
 
 print CGI->header(-type=>'text/html; charset=utf-8', -expires=>'+5m');
 POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8');
 
-printf <<"EOF", $params{-3}, $match_stddev;
+printf <<"EOF", $aux_parms->{'rating_prior_stddev'}, $match_stddev;
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE
   html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
@@ -65,7 +62,7 @@ printf <<"EOF", $params{-3}, $match_stddev;
       <a href="ratings-explained">forklaring</a> beregnet på ikke-matematikere.</p>
 
     <ul>
-      <li>MLE-basert modell med én skalar (styrke) per spiller og to globale skalarer (begge standardavvik, se under), løst med syklisk MM (minorization-maximization). Antall iterasjoner før konvergens: $params{-1}.</li>
+      <li>MLE-basert modell med én skalar (styrke) per spiller og to globale skalarer (begge standardavvik, se under), løst med syklisk MM (minorization-maximization). Antall iterasjoner før konvergens: $aux_parms->{num_iterations}.</li>
       <li>Rimelighetfunksjon, prior: Normalfordeling med µ=500, &sigma;=%.1f (est.)</li>
       <li>Rimelighetfunksjon, per kamp: Normalfordeling med µ=(score1 - score2), &sigma;=%.1f (est.)</li>
       <li>Vekting: Inneværende sesong samt de tre siste vektes fullt ut
@@ -84,13 +81,11 @@ printf <<"EOF", $params{-3}, $match_stddev;
       </tr>
 EOF
 
-my $cgi = CGI->new;
-my $locale = wloh_common::get_locale($cgi);
 my $season = wloh_common::get_max_season($dbh, $locale);
 
 # Pick up all the subdivisions' ratings.
 my %subdivision_ratings = ();
-$q = $dbh->prepare('SELECT divisjon, avdeling, serie_id, AVG(rating) AS avg_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling');
+my $q = $dbh->prepare('SELECT divisjon, avdeling, serie_id, AVG(rating) AS avg_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling');
 $q->execute($season);
 
 while (my $ref = $q->fetchrow_hashref) {
@@ -170,6 +165,4 @@ print <<"EOF";
 </html>
 EOF
 
-$match_stddev = $params{-2} * sqrt(2.0);
-
 $dbh->rollback;