Skip to content
Snippets Groups Projects
Commit 472c5af5 authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

prace: Přidání tabulek

parent 1f3de0ce
No related branches found
No related tags found
No related merge requests found
......@@ -1206,6 +1206,63 @@ Z toho pak můžeme vyslovit hypotézu, že $\delta_{\algo{sdp}}(n) \le 0.34$ pr
Z naměřených dat také můžeme usuzovat, že $\algo{sdp}$ je lepší než libovolný z jiných představených algoritmů.
```python {redefine=tmp}
from bakalarka import data_lib, g
data = g.load_main_test()
import math
def row(*args):
return pf.TableRow(*(pf.TableCell(pf.Plain(*(i if isinstance(i, list) else parse_string(f"{i:0.3}") if isinstance(i, float) else parse_string(str(i))))) for i in args))
def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False):
pipeline = data.pipelines[pipeline_name]
by_n = data_lib.group_by_n(pipeline)
rows = []
percentils = [10,50,90]
print_errors = any(i.error or i.data.get("broken", False) for i in pipeline)
for n in sorted(by_n.keys()):
d = by_n[n]
scores = [ i.score/n for i in d]
scores.sort()
l = len(scores)
avg = sum(scores) / l
variance = sum((avg-i)**2 for i in scores)/(l-1)
errors = len([None for i in d if i.error or i.data.get("broken", False)])
rows.append(row(
n,
l,
*([errors] if print_errors else []),
avg,
math.sqrt(variance),
*(scores[int((l-0.001)*perc/100)] for perc in percentils),
))
table = pf.Table(pf.TableBody(*rows), head=pf.TableHead(row(
[pf.Math("n", format='InlineMath')],
"testů",
*(["chyb"] if print_errors else []),
[pf.Math("\\overline{\\delta_{\\algo{"+algo_name+"}}(n)}", format='InlineMath')],
[pf.Math("\\sqrt{\widehat{\\delta_{\\algo{"+algo_name+"}}(n)^2}}", format='InlineMath')],
*([pf.Math(f"{i} \%", format='InlineMath')] for i in percentils)
)))
note = element.content if add_note else []
return processor.transform([pf.Figure(table, *note, caption=pf.Caption(pf.Plain(*parse_string("Statistika algoritmu "), pf.Math(f"\\algo{{{algo_name}}}", format="InlineMath"), *name_suffix, *parse_string("."))), attributes=dict(floatpage=floatpage))])
return [
*gen_alg("greedy", "g", [], "stat1", True),
*gen_alg("rg", "rg", [], "stat1!"),
*gen_alg("rsg", "rsg", [], "stat2"),
*gen_alg("semidef_prog_sage.sage(10, CVXOPT)", "sdp", parse_string(" – Sage"), "stat2"),
*gen_alg("semidef_prog(10)", "sdp", parse_string(" – SDPA-C"), "stat2!"),
]
```
::: {c=tmp}
Veškeré hodnoty jsou zaokrouhleny na 3 platné číslice.
$\overline{\delta_{\alg}(n)}$ značí výběrový průměr, tedy $\frac{1}{m}\sum_{0\le i < m} r_i$, kde $m$ je počet testů a $r_i$ je relativní skóre $i$-tého z nich.
$\widehat{\delta_{\alg}(n)^2}$ značí výběrový rozptyl, tedy $\frac{1}{m-1}\sum_{0\le i < m} \left(r_i - \overline{\delta_{\alg}(n)}\right)^2$.
:::
\vfil\eject
Dolní odhad
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment