diversity_prediction_theorem.sf 653 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Diversity_prediction_theorem
  4. #
  5. func avg_error(m, v) {
  6. v.map { (_ - m)**2 }.sum / v.len
  7. }
  8. func diversity_calc(truth, pred) {
  9. var ae = avg_error(truth, pred)
  10. var cp = pred.sum/pred.len
  11. var ce = (cp - truth)**2
  12. var pd = avg_error(cp, pred)
  13. return [ae, ce, pd]
  14. }
  15. func diversity_format(stats) {
  16. gather {
  17. for t,v in (%w(average-error crowd-error diversity) ~Z stats) {
  18. take(("%13s" % t) + ':' + ('%7.3f' % v))
  19. }
  20. }
  21. }
  22. diversity_format(diversity_calc(49, [48, 47, 51])).each{.say}
  23. diversity_format(diversity_calc(49, [48, 47, 51, 42])).each{.say}