all done but practical usefulness

This commit is contained in:
Claudio Maggioni 2023-05-27 22:39:27 +02:00
parent 5841b222ee
commit a6662bc950
6 changed files with 282 additions and 261 deletions

View file

@ -4,6 +4,7 @@ import pandas as pd
import glob
import re
import itertools
import statsmodels.stats.power as pw
import numpy as np
from train_classifiers import perform_grid_search, load_dataset
import seaborn as sns
@ -110,6 +111,17 @@ def main():
df_stats = pd.DataFrame(columns=['classifier_a', 'classifier_b', 'metric', 'pvalue'])
short_names = {
'MLPClassifier': "MLP",
'GaussianNB': "NB",
'SVC': "SVP",
'DecisionTreeClassifier': "DT",
'RandomForestClassifier': "RF",
'BiasedClassifier': 'Biased'
}
observations = {}
i = 1
for classifier_a in classifier_list:
for classifier_b in classifier_list:
@ -128,9 +140,43 @@ def main():
df_stats.loc[i, 'classifier_a'] = classifier_a
df_stats.loc[i, 'classifier_b'] = classifier_b
df_stats.loc[i, 'metric'] = metric
df_stats.loc[i, 'pvalue'] = wilcoxon(series_a, series_b).pvalue
pvalue = wilcoxon(series_a, series_b).pvalue
df_stats.loc[i, 'pvalue'] = pvalue
if metric not in observations:
observations[metric] = []
sa = short_names[classifier_a]
sb = short_names[classifier_b]
meana = np.round(np.mean(series_a), decimals=4)
meanb = np.round(np.mean(series_b), decimals=4)
pvalue = np.round(pvalue, decimals=4)
s = f"- Mean *{metric}* for *{sa}*: {meana},"
s += f" mean *{metric}* for *{sb}*: {meanb} $\\Rightarrow$ "
if pvalue < 0.05:
better = sa if meana > meanb else sb
worse = sa if better == sb else sb
s += f"*{better}* is better than *{worse}* (*p-value* $= {pvalue}$)"
else:
eff_size = (np.mean(series_a) - np.mean(series_b)) / np.sqrt((np.std(series_a) ** 2 + np.std(series_b) ** 2) / 2.0)
power = pw.FTestAnovaPower().solve_power(effect_size=eff_size, nobs=len(series_a) + len(series_b), alpha=0.05)
power = np.round(power, decimals=4)
if power >= 0.8:
s += f"*{sa}* is as effective as *{sb}* (*p-value* $= {pvalue}$, *5% corrected ANOVA power* $= {power}$)"
else:
s += f"statistical test inconclusive (*p-value* $= {pvalue}$, *5% corrected ANOVA power* $= {power}$)"
i += 1
observations[metric].append(s)
for metric in metric_list:
if metric == 'accuracy':
continue
print(metric + ":")
print("\n".join(observations[metric]))
df_stats.to_csv(OUT_DIR + '/model_stats.csv')
@ -169,6 +215,8 @@ def main():
dftab.columns = [x[1] if x[0] == 'value' else x[0] for x in dftab.columns]
print(dftab.to_markdown(index=False))
print()
if __name__ == '__main__':
main()

View file

@ -6,7 +6,7 @@
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2023-05-24T18:24:16.947257</dc:date>
<dc:date>2023-05-27T22:19:21.168970</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
@ -44,7 +44,7 @@ L 106.5216 360.413793
L 87.0784 360.413793
L 87.0784 366.786207
z
" clip-path="url(#p5256a55a9d)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_4">
<path d="M 106.9184 197.28
@ -53,7 +53,7 @@ L 126.3616 165.6
L 106.9184 165.6
L 106.9184 197.28
z
" clip-path="url(#p5256a55a9d)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_5">
<path d="M 126.7584 206.921739
@ -62,7 +62,7 @@ L 146.2016 160.32
L 126.7584 160.32
L 126.7584 206.921739
z
" clip-path="url(#p5256a55a9d)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_6">
<path d="M 146.5984 195.105882
@ -71,7 +71,7 @@ L 166.0416 155.7
L 146.5984 155.7
L 146.5984 195.105882
z
" clip-path="url(#p5256a55a9d)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_7">
<path d="M 166.4384 173.799529
@ -80,7 +80,7 @@ L 185.8816 142.971429
L 166.4384 142.971429
L 166.4384 173.799529
z
" clip-path="url(#p5256a55a9d)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_8">
<path d="M 186.2784 241.245209
@ -89,7 +89,7 @@ L 205.7216 201.858676
L 186.2784 201.858676
L 186.2784 241.245209
z
" clip-path="url(#p5256a55a9d)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_9">
<path d="M 235.8784 86.4
@ -98,7 +98,7 @@ L 255.3216 86.4
L 235.8784 86.4
L 235.8784 86.4
z
" clip-path="url(#p5256a55a9d)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_10">
<path d="M 255.7184 125.07907
@ -107,7 +107,7 @@ L 275.1616 99
L 255.7184 99
L 255.7184 125.07907
z
" clip-path="url(#p5256a55a9d)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_11">
<path d="M 275.5584 434.511628
@ -116,7 +116,7 @@ L 295.0016 382.939535
L 275.5584 382.939535
L 275.5584 434.511628
z
" clip-path="url(#p5256a55a9d)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_12">
<path d="M 295.3984 137.972093
@ -125,7 +125,7 @@ L 314.8416 99.293023
L 295.3984 99.293023
L 295.3984 137.972093
z
" clip-path="url(#p5256a55a9d)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_13">
<path d="M 315.2384 125.07907
@ -134,7 +134,7 @@ L 334.6816 95.85
L 315.2384 95.85
L 315.2384 125.07907
z
" clip-path="url(#p5256a55a9d)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_14">
<path d="M 335.0784 250.2
@ -143,7 +143,7 @@ L 354.5216 197.236047
L 335.0784 197.236047
L 335.0784 250.2
z
" clip-path="url(#p5256a55a9d)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_15">
<path d="M 384.6784 274.043077
@ -152,7 +152,7 @@ L 404.1216 268.378626
L 384.6784 268.378626
L 384.6784 274.043077
z
" clip-path="url(#p5256a55a9d)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_16">
<path d="M 404.5184 160.32
@ -161,7 +161,7 @@ L 423.9616 137.839175
L 404.5184 137.839175
L 404.5184 160.32
z
" clip-path="url(#p5256a55a9d)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_17">
<path d="M 424.3584 360.497015
@ -170,7 +170,7 @@ L 443.8016 309.814925
L 424.3584 309.814925
L 424.3584 360.497015
z
" clip-path="url(#p5256a55a9d)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_18">
<path d="M 444.1984 162.265263
@ -179,7 +179,7 @@ L 463.6416 136.52
L 444.1984 136.52
L 444.1984 162.265263
z
" clip-path="url(#p5256a55a9d)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_19">
<path d="M 464.0384 148
@ -188,7 +188,7 @@ L 483.4816 122.556522
L 464.0384 122.556522
L 464.0384 148
z
" clip-path="url(#p5256a55a9d)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_20">
<path d="M 483.8784 240.028916
@ -197,7 +197,7 @@ L 503.3216 204.755056
L 483.8784 204.755056
L 483.8784 240.028916
z
" clip-path="url(#p5256a55a9d)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 1.5; stroke-linejoin: miter"/>
</g>
<g id="patch_21">
<path d="M 146.4 640.8
@ -205,7 +205,7 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3274a1; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="patch_22">
<path d="M 146.4 640.8
@ -213,7 +213,7 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #e1812c; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="patch_23">
<path d="M 146.4 640.8
@ -221,7 +221,7 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #3a923a; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="patch_24">
<path d="M 146.4 640.8
@ -229,7 +229,7 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #c03d3e; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="patch_25">
<path d="M 146.4 640.8
@ -237,7 +237,7 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #9372b2; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="patch_26">
<path d="M 146.4 640.8
@ -245,18 +245,18 @@ L 146.4 640.8
L 146.4 640.8
L 146.4 640.8
z
" clip-path="url(#p5256a55a9d)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
" clip-path="url(#p0c45fec8d2)" style="fill: #845b53; stroke: #3d3d3d; stroke-width: 0.75; stroke-linejoin: miter"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path id="mfbe1b00276" d="M 0 0
<path id="ma24f04e49a" d="M 0 0
L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#mfbe1b00276" x="146.4" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#ma24f04e49a" x="146.4" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_1">
@ -452,7 +452,7 @@ z
<g id="xtick_2">
<g id="line2d_2">
<g>
<use xlink:href="#mfbe1b00276" x="295.2" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#ma24f04e49a" x="295.2" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_2">
@ -512,7 +512,7 @@ z
<g id="xtick_3">
<g id="line2d_3">
<g>
<use xlink:href="#mfbe1b00276" x="444" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#ma24f04e49a" x="444" y="650.8" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_3">
@ -615,12 +615,12 @@ z
<g id="ytick_1">
<g id="line2d_4">
<defs>
<path id="mc26e012fcb" d="M 0 0
<path id="mff0a3fa1b8" d="M 0 0
L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#mc26e012fcb" x="62" y="640.8" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="640.8" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_5">
@ -665,7 +665,7 @@ z
<g id="ytick_2">
<g id="line2d_5">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="585.36" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="585.36" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_6">
@ -680,7 +680,7 @@ z
<g id="ytick_3">
<g id="line2d_6">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="529.92" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="529.92" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_7">
@ -721,7 +721,7 @@ z
<g id="ytick_4">
<g id="line2d_7">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="474.48" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="474.48" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_8">
@ -770,7 +770,7 @@ z
<g id="ytick_5">
<g id="line2d_8">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="419.04" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="419.04" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_9">
@ -806,7 +806,7 @@ z
<g id="ytick_6">
<g id="line2d_9">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="363.6" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="363.6" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_10">
@ -848,7 +848,7 @@ z
<g id="ytick_7">
<g id="line2d_10">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="308.16" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="308.16" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_11">
@ -895,7 +895,7 @@ z
<g id="ytick_8">
<g id="line2d_11">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="252.72" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="252.72" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_12">
@ -922,7 +922,7 @@ z
<g id="ytick_9">
<g id="line2d_12">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="197.28" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="197.28" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_13">
@ -978,7 +978,7 @@ z
<g id="ytick_10">
<g id="line2d_13">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="141.84" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="141.84" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_14">
@ -1025,7 +1025,7 @@ z
<g id="ytick_11">
<g id="line2d_14">
<g>
<use xlink:href="#mc26e012fcb" x="62" y="86.4" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mff0a3fa1b8" x="62" y="86.4" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_15">
@ -1093,532 +1093,532 @@ z
<g id="line2d_15">
<path d="M 96.8 366.786207
L 96.8 366.786207
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_16">
<path d="M 96.8 360.413793
L 96.8 360.413793
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_17">
<path d="M 91.9392 366.786207
L 101.6608 366.786207
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_18">
<path d="M 91.9392 360.413793
L 101.6608 360.413793
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_19"/>
<g id="line2d_20">
<path d="M 116.64 197.28
L 116.64 233.485714
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_21">
<path d="M 116.64 165.6
L 116.64 123.36
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_22">
<path d="M 111.7792 233.485714
L 121.5008 233.485714
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_23">
<path d="M 111.7792 123.36
L 121.5008 123.36
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_24"/>
<g id="line2d_25">
<path d="M 136.48 206.921739
L 136.48 271.2
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_26">
<path d="M 136.48 160.32
L 136.48 112.8
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_27">
<path d="M 131.6192 271.2
L 141.3408 271.2
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_28">
<path d="M 131.6192 112.8
L 141.3408 112.8
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_29">
<defs>
<path id="mae3e906b94" d="M -0 3.535534
<path id="m032be3f3bf" d="M -0 3.535534
L 2.12132 0
L -0 -3.535534
L -2.12132 -0
z
" style="stroke: #3d3d3d; stroke-linejoin: miter"/>
</defs>
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="136.48" y="294.3" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="136.48" y="294.3" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_30">
<path d="M 156.32 195.105882
L 156.32 232.294737
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_31">
<path d="M 156.32 155.7
L 156.32 121.787234
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_32">
<path d="M 151.4592 232.294737
L 161.1808 232.294737
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_33">
<path d="M 151.4592 121.787234
L 161.1808 121.787234
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_34">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="156.32" y="261.473684" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="156.32" y="261.473684" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_35">
<path d="M 176.16 173.799529
L 176.16 216.847059
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_36">
<path d="M 176.16 142.971429
L 176.16 110.504348
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_37">
<path d="M 171.2992 216.847059
L 181.0208 216.847059
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_38">
<path d="M 171.2992 110.504348
L 181.0208 110.504348
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_39"/>
<g id="line2d_40">
<path d="M 196 241.245209
L 196 298.08
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_41">
<path d="M 196 201.858676
L 196 149.76
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_42">
<path d="M 191.1392 298.08
L 200.8608 298.08
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_43">
<path d="M 191.1392 149.76
L 200.8608 149.76
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_44"/>
<g id="line2d_45">
<path d="M 245.6 86.4
L 245.6 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_46">
<path d="M 245.6 86.4
L 245.6 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_47">
<path d="M 240.7392 86.4
L 250.4608 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_48">
<path d="M 240.7392 86.4
L 250.4608 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_49"/>
<g id="line2d_50">
<path d="M 265.44 125.07907
L 265.44 150.865116
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_51">
<path d="M 265.44 99
L 265.44 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_52">
<path d="M 260.5792 150.865116
L 270.3008 150.865116
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_53">
<path d="M 260.5792 86.4
L 270.3008 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_54">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="265.44" y="176.651163" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="265.44" y="176.651163" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_55">
<path d="M 285.28 434.511628
L 285.28 511.869767
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_56">
<path d="M 285.28 382.939535
L 285.28 313.2
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_57">
<path d="M 280.4192 511.869767
L 290.1408 511.869767
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_58">
<path d="M 280.4192 313.2
L 290.1408 313.2
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_59">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="285.28" y="514.8" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="285.28" y="254.009302" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="285.28" y="288" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="285.28" y="300.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="285.28" y="288" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="285.28" y="514.8" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="285.28" y="254.009302" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="285.28" y="288" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="285.28" y="300.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="285.28" y="288" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_60">
<path d="M 305.12 137.972093
L 305.12 176.651163
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_61">
<path d="M 305.12 99.293023
L 305.12 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_62">
<path d="M 300.2592 176.651163
L 309.9808 176.651163
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_63">
<path d="M 300.2592 86.4
L 309.9808 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_64"/>
<g id="line2d_65">
<path d="M 324.96 125.07907
L 324.96 163.75814
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_66">
<path d="M 324.96 95.85
L 324.96 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_67">
<path d="M 320.0992 163.75814
L 329.8208 163.75814
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_68">
<path d="M 320.0992 86.4
L 329.8208 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_69">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="324.96" y="174.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="324.96" y="174.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_70">
<path d="M 344.8 250.2
L 344.8 325.8
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_71">
<path d="M 344.8 197.236047
L 344.8 125.07907
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_72">
<path d="M 339.9392 325.8
L 349.6608 325.8
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_73">
<path d="M 339.9392 125.07907
L 349.6608 125.07907
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_74">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="344.8" y="363.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="344.8" y="111.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="344.8" y="363.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="344.8" y="111.6" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_75">
<path d="M 394.4 274.043077
L 394.4 274.043077
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_76">
<path d="M 394.4 268.378626
L 394.4 268.378626
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_77">
<path d="M 389.5392 274.043077
L 399.2608 274.043077
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_78">
<path d="M 389.5392 268.378626
L 399.2608 268.378626
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_79"/>
<g id="line2d_80">
<path d="M 414.24 160.32
L 414.24 185.608421
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_81">
<path d="M 414.24 137.839175
L 414.24 111.04
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_82">
<path d="M 409.3792 185.608421
L 419.1008 185.608421
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_83">
<path d="M 409.3792 111.04
L 419.1008 111.04
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_84">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="414.24" y="206.921739" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="414.24" y="206.921739" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_85">
<path d="M 434.08 360.497015
L 434.08 426.193548
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_86">
<path d="M 434.08 309.814925
L 434.08 236.237838
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_87">
<path d="M 429.2192 426.193548
L 438.9408 426.193548
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_88">
<path d="M 429.2192 236.237838
L 438.9408 236.237838
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_89">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="434.08" y="449.627586" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="442.8" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="452.867797" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="439.2" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="439.2" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="219.736709" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="232.294737" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="434.08" y="232.294737" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="434.08" y="449.627586" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="442.8" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="452.867797" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="439.2" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="439.2" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="219.736709" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="232.294737" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="434.08" y="232.294737" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_90">
<path d="M 453.92 162.265263
L 453.92 185.608421
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_91">
<path d="M 453.92 136.52
L 453.92 104.676923
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_92">
<path d="M 449.0592 185.608421
L 458.7808 185.608421
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_93">
<path d="M 449.0592 104.676923
L 458.7808 104.676923
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_94">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="453.92" y="208.368" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="453.92" y="204.357447" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="453.92" y="208.368" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="453.92" y="204.357447" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_95">
<path d="M 473.76 148
L 473.76 180.765957
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_96">
<path d="M 473.76 122.556522
L 473.76 98.72
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_97">
<path d="M 468.8992 180.765957
L 478.6208 180.765957
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_98">
<path d="M 468.8992 98.72
L 478.6208 98.72
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_99"/>
<g id="line2d_100">
<path d="M 493.6 240.028916
L 493.6 289.913924
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_101">
<path d="M 493.6 204.755056
L 493.6 155.7
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_102">
<path d="M 488.7392 289.913924
L 498.4608 289.913924
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_103">
<path d="M 488.7392 155.7
L 498.4608 155.7
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_104">
<g clip-path="url(#p5256a55a9d)">
<use xlink:href="#mae3e906b94" x="493.6" y="324" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#mae3e906b94" x="493.6" y="142.462921" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<g clip-path="url(#p0c45fec8d2)">
<use xlink:href="#m032be3f3bf" x="493.6" y="324" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
<use xlink:href="#m032be3f3bf" x="493.6" y="142.462921" style="fill: #3d3d3d; stroke: #3d3d3d; stroke-linejoin: miter"/>
</g>
</g>
<g id="line2d_105">
<path d="M 87.0784 366.786207
L 106.5216 366.786207
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_106">
<path d="M 106.9184 179.671698
L 126.3616 179.671698
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_107">
<path d="M 126.7584 182.817391
L 146.2016 182.817391
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_108">
<path d="M 146.5984 178.8
L 166.0416 178.8
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_109">
<path d="M 166.4384 155.7
L 185.8816 155.7
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_110">
<path d="M 186.2784 225
L 205.7216 225
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_111">
<path d="M 235.8784 86.4
L 255.3216 86.4
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_112">
<path d="M 255.7184 111.6
L 275.1616 111.6
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_113">
<path d="M 275.5584 408.725581
L 295.0016 408.725581
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_114">
<path d="M 295.3984 112.186047
L 314.8416 112.186047
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_115">
<path d="M 315.2384 105.446512
L 334.6816 105.446512
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_116">
<path d="M 335.0784 220.165116
L 354.5216 220.165116
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_117">
<path d="M 384.6784 274.043077
L 404.1216 274.043077
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_118">
<path d="M 404.5184 148.635052
L 423.9616 148.635052
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_119">
<path d="M 424.3584 333.747692
L 443.8016 333.747692
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_120">
<path d="M 444.1984 153.171692
L 463.6416 153.171692
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_121">
<path d="M 464.0384 135.704348
L 483.4816 135.704348
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="line2d_122">
<path d="M 483.8784 225.761538
L 503.3216 225.761538
" clip-path="url(#p5256a55a9d)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
" clip-path="url(#p0c45fec8d2)" style="fill: none; stroke: #3d3d3d; stroke-width: 1.5; stroke-linecap: square"/>
</g>
<g id="patch_27">
<path d="M 62 640.8
@ -2223,7 +2223,7 @@ z
</g>
</g>
<defs>
<clipPath id="p5256a55a9d">
<clipPath id="p0c45fec8d2">
<rect x="72" y="86.4" width="446.4" height="554.4"/>
</clipPath>
</defs>

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View file

@ -1,46 +1,2 @@
,classifier_a,classifier_b,metric,pvalue
1,DecisionTreeClassifier,GaussianNB,precision,0.08929133280531223
2,DecisionTreeClassifier,GaussianNB,recall,3.877480505802584e-18
3,DecisionTreeClassifier,GaussianNB,f1,3.896340037647931e-18
4,DecisionTreeClassifier,MLPClassifier,precision,0.4012348497407896
5,DecisionTreeClassifier,MLPClassifier,recall,0.011820059675817408
6,DecisionTreeClassifier,MLPClassifier,f1,0.4710651684151138
7,DecisionTreeClassifier,RandomForestClassifier,precision,8.283473187323235e-12
8,DecisionTreeClassifier,RandomForestClassifier,recall,0.3276029575034267
9,DecisionTreeClassifier,RandomForestClassifier,f1,1.4515097813437996e-10
10,DecisionTreeClassifier,SVC,precision,6.472995016722292e-16
11,DecisionTreeClassifier,SVC,recall,3.864155888689142e-18
12,DecisionTreeClassifier,SVC,f1,3.896559845095909e-18
13,GaussianNB,MLPClassifier,precision,0.03476088049603166
14,GaussianNB,MLPClassifier,recall,3.873544128513129e-18
15,GaussianNB,MLPClassifier,f1,3.896120241954008e-18
16,GaussianNB,RandomForestClassifier,precision,5.027978595522601e-10
17,GaussianNB,RandomForestClassifier,recall,3.8656827355135645e-18
18,GaussianNB,RandomForestClassifier,f1,3.896120241954008e-18
19,GaussianNB,SVC,precision,7.361006463422299e-13
20,GaussianNB,SVC,recall,3.881639684405151e-18
21,GaussianNB,SVC,f1,4.265842540306607e-18
22,MLPClassifier,RandomForestClassifier,precision,2.9302015489842885e-09
23,MLPClassifier,RandomForestClassifier,recall,0.00010909237805840521
24,MLPClassifier,RandomForestClassifier,f1,1.1542838431590428e-11
25,MLPClassifier,SVC,precision,3.6744416439536415e-16
26,MLPClassifier,SVC,recall,5.645631221640026e-18
27,MLPClassifier,SVC,f1,5.112831740936498e-18
28,RandomForestClassifier,SVC,precision,4.0161556854627e-18
29,RandomForestClassifier,SVC,recall,3.8584897469079895e-18
30,RandomForestClassifier,SVC,f1,3.896559845095909e-18
31,BiasedClassifier,DecisionTreeClassifier,precision,3.881858705649312e-18
32,BiasedClassifier,DecisionTreeClassifier,recall,1.0267247842714985e-14
33,BiasedClassifier,DecisionTreeClassifier,f1,3.881858705649312e-18
34,BiasedClassifier,GaussianNB,precision,3.876167958900271e-18
35,BiasedClassifier,GaussianNB,recall,3.7861845925093915e-18
36,BiasedClassifier,GaussianNB,f1,4.22499456189738e-16
37,BiasedClassifier,MLPClassifier,precision,3.887338045617697e-18
38,BiasedClassifier,MLPClassifier,recall,2.2417567344517687e-15
39,BiasedClassifier,MLPClassifier,f1,3.886680137925553e-18
40,BiasedClassifier,RandomForestClassifier,precision,3.8798879361158955e-18
41,BiasedClassifier,RandomForestClassifier,recall,4.647240654275836e-14
42,BiasedClassifier,RandomForestClassifier,f1,3.8798879361158955e-18
43,BiasedClassifier,SVC,precision,3.890848669938197e-18
44,BiasedClassifier,SVC,recall,3.803119001919453e-18
45,BiasedClassifier,SVC,f1,4.337936940303975e-17
1,BiasedClassifier,SVC,f1,4.337936940303975e-17

1 classifier_a classifier_b metric pvalue
2 1 DecisionTreeClassifier BiasedClassifier GaussianNB SVC precision f1 0.08929133280531223 4.337936940303975e-17
2 DecisionTreeClassifier GaussianNB recall 3.877480505802584e-18
3 DecisionTreeClassifier GaussianNB f1 3.896340037647931e-18
4 DecisionTreeClassifier MLPClassifier precision 0.4012348497407896
5 DecisionTreeClassifier MLPClassifier recall 0.011820059675817408
6 DecisionTreeClassifier MLPClassifier f1 0.4710651684151138
7 DecisionTreeClassifier RandomForestClassifier precision 8.283473187323235e-12
8 DecisionTreeClassifier RandomForestClassifier recall 0.3276029575034267
9 DecisionTreeClassifier RandomForestClassifier f1 1.4515097813437996e-10
10 DecisionTreeClassifier SVC precision 6.472995016722292e-16
11 DecisionTreeClassifier SVC recall 3.864155888689142e-18
12 DecisionTreeClassifier SVC f1 3.896559845095909e-18
13 GaussianNB MLPClassifier precision 0.03476088049603166
14 GaussianNB MLPClassifier recall 3.873544128513129e-18
15 GaussianNB MLPClassifier f1 3.896120241954008e-18
16 GaussianNB RandomForestClassifier precision 5.027978595522601e-10
17 GaussianNB RandomForestClassifier recall 3.8656827355135645e-18
18 GaussianNB RandomForestClassifier f1 3.896120241954008e-18
19 GaussianNB SVC precision 7.361006463422299e-13
20 GaussianNB SVC recall 3.881639684405151e-18
21 GaussianNB SVC f1 4.265842540306607e-18
22 MLPClassifier RandomForestClassifier precision 2.9302015489842885e-09
23 MLPClassifier RandomForestClassifier recall 0.00010909237805840521
24 MLPClassifier RandomForestClassifier f1 1.1542838431590428e-11
25 MLPClassifier SVC precision 3.6744416439536415e-16
26 MLPClassifier SVC recall 5.645631221640026e-18
27 MLPClassifier SVC f1 5.112831740936498e-18
28 RandomForestClassifier SVC precision 4.0161556854627e-18
29 RandomForestClassifier SVC recall 3.8584897469079895e-18
30 RandomForestClassifier SVC f1 3.896559845095909e-18
31 BiasedClassifier DecisionTreeClassifier precision 3.881858705649312e-18
32 BiasedClassifier DecisionTreeClassifier recall 1.0267247842714985e-14
33 BiasedClassifier DecisionTreeClassifier f1 3.881858705649312e-18
34 BiasedClassifier GaussianNB precision 3.876167958900271e-18
35 BiasedClassifier GaussianNB recall 3.7861845925093915e-18
36 BiasedClassifier GaussianNB f1 4.22499456189738e-16
37 BiasedClassifier MLPClassifier precision 3.887338045617697e-18
38 BiasedClassifier MLPClassifier recall 2.2417567344517687e-15
39 BiasedClassifier MLPClassifier f1 3.886680137925553e-18
40 BiasedClassifier RandomForestClassifier precision 3.8798879361158955e-18
41 BiasedClassifier RandomForestClassifier recall 4.647240654275836e-14
42 BiasedClassifier RandomForestClassifier f1 3.8798879361158955e-18
43 BiasedClassifier SVC precision 3.890848669938197e-18
44 BiasedClassifier SVC recall 3.803119001919453e-18
45 BiasedClassifier SVC f1 4.337936940303975e-17

View file

@ -308,10 +308,19 @@ For sake of brevity, only the top 100 results by accuracy are shown.
| gini | balanced_subsample | log2 | 0.803922 | 0.862069 | 0.953488 | 0.87234 |
| entropy | balanced_subsample | log2 | 0.803922 | 0.862069 | 0.953488 | 0.87234 |
# Evaluation
To evaluate the performance of each selected classifier, each model has trained 100 times by repeating a 5-fold
cross validation procedure 20 times. A graphical and statistical analysis to compare the distribution of
performance metrics (precision, recall and F1 score) follows.
Numeric tables, statistical analysis conclusions and the boxplot diagram shown in this section are obtained by
running the script:
```
./evaluate_classifiers.py
```
## Output Distributions
A boxplot chart to show the distribution of each of precision, recall, and F1 score
@ -348,58 +357,65 @@ table summing up mean and standard deviation of each metric.
## Comparison and Significance
For every combination of two classifiers and every performance metric
(precision, recall, f1) compare which algorithm performs better, by how
much, and report the corresponding p-value in the following
subsubsections:
Given the distribution of metrics presented in the previous section, I perform a statistical analysis
using the Wilixcon paired test to determine for each pair of classifiers which one performs better
according to each performance metric. When the *p-value* is too high, *ANOVA* power analysis (corrected
by *alpha* = $= 0.05$) is performed to determine if the metrics are equally distributed or if the statistical
test is inconclusive.
::: {#tab:precision}
| | DecisionTreeClassifier | GaussianNB | MLPClassifier | RandomForestClassifier | SVC |
|:-----------------------|:-------------------------|:-------------|:----------------|:-------------------------|------:|
| BiasedClassifier | 0.0000 | 0.0000 | 0.0000 | 0.0000 |0.0000|
| DecisionTreeClassifier | -- | 0.0893 | 0.4012 | 0.0000 |0.0000|
| GaussianNB | -- | -- | 0.0348 | 0.0000 |0.0000|
| MLPClassifier | -- | -- | -- | 0.0000 |0.0000|
| RandomForestClassifier | -- | -- | -- | -- |0.0000|
# F1 Values
: Pairwise Wilcoxon test for precision for each combination of classifiers.
:::
::: {#tab:recall}
| | DecisionTreeClassifier | GaussianNB | MLPClassifier | RandomForestClassifier | SVC |
|:-----------------------|:-------------------------|:-------------|:----------------|:-------------------------|------:|
| BiasedClassifier | 0.0000 | 0.0000 | 0.0000 | 0.0000 |0.0000|
| DecisionTreeClassifier | -- | 0.0000 | 0.0118 | 0.3276 |0.0000|
| GaussianNB | -- | -- | 0.0000 | 0.0000 |0.0000|
| MLPClassifier | -- | -- | -- | 0.0001 |0.0000|
| RandomForestClassifier | -- | -- | -- | -- |0.0000|
: Pairwise Wilcoxon test for recall for each combination of classifiers.
:::
::: {#tab:f1}
| | DecisionTreeClassifier | GaussianNB | MLPClassifier | RandomForestClassifier | SVC |
|:-----------------------|:-------------------------|:-------------|:----------------|:-------------------------|------:|
| BiasedClassifier | 0.0000 | 0.0000 | 0.0000 | 0.0000 |0.0000|
| DecisionTreeClassifier | -- | 0.0000 | 0.4711 | 0.0000 |0.0000|
| GaussianNB | -- | -- | 0.0000 | 0.0000 |0.0000|
| MLPClassifier | -- | -- | -- | 0.0000 |0.0000|
| RandomForestClassifier | -- | -- | -- | -- |0.0000|
: Pairwise Wilcoxon test for the F1 score metric for each combination of classifiers.
:::
### F1 Values
-
- \...
- Mean *F1* for *DT*: 0.8881, mean *F1* for *NB*: 0.5495 $\Rightarrow$ *DT* is better than *NB* (*p-value* $= 0.0$)
- Mean *F1* for *DT*: 0.8881, mean *F1* for *MLP*: 0.8848 $\Rightarrow$ statistical test inconclusive (*p-value* $= 0.4711$, *5% corrected ANOVA power* $= 0.2987$)
- Mean *F1* for *DT*: 0.8881, mean *F1* for *RF*: 0.9108 $\Rightarrow$ *RF* is better than *DT* (*p-value* $= 0.0$)
- Mean *F1* for *DT*: 0.8881, mean *F1* for *SVP*: 0.7527 $\Rightarrow$ *DT* is better than *SVP* (*p-value* $= 0.0$)
- Mean *F1* for *NB*: 0.5495, mean *F1* for *MLP*: 0.8848 $\Rightarrow$ *MLP* is better than *NB* (*p-value* $= 0.0$)
- Mean *F1* for *NB*: 0.5495, mean *F1* for *RF*: 0.9108 $\Rightarrow$ *RF* is better than *NB* (*p-value* $= 0.0$)
- Mean *F1* for *NB*: 0.5495, mean *F1* for *SVP*: 0.7527 $\Rightarrow$ *SVP* is better than *NB* (*p-value* $= 0.0$)
- Mean *F1* for *MLP*: 0.8848, mean *F1* for *RF*: 0.9108 $\Rightarrow$ *RF* is better than *MLP* (*p-value* $= 0.0$)
- Mean *F1* for *MLP*: 0.8848, mean *F1* for *SVP*: 0.7527 $\Rightarrow$ *MLP* is better than *SVP* (*p-value* $= 0.0$)
- Mean *F1* for *RF*: 0.9108, mean *F1* for *SVP*: 0.7527 $\Rightarrow$ *RF* is better than *SVP* (*p-value* $= 0.0$)
- Mean *F1* for *Biased*: 0.6662, mean *F1* for *DT*: 0.8881 $\Rightarrow$ *DT* is better than *Biased* (*p-value* $= 0.0$)
- Mean *F1* for *Biased*: 0.6662, mean *F1* for *NB*: 0.5495 $\Rightarrow$ *Biased* is better than *NB* (*p-value* $= 0.0$)
- Mean *F1* for *Biased*: 0.6662, mean *F1* for *MLP*: 0.8848 $\Rightarrow$ *MLP* is better than *Biased* (*p-value* $= 0.0$)
- Mean *F1* for *Biased*: 0.6662, mean *F1* for *RF*: 0.9108 $\Rightarrow$ *RF* is better than *Biased* (*p-value* $= 0.0$)
- Mean *F1* for *Biased*: 0.6662, mean *F1* for *SVP*: 0.7527 $\Rightarrow$ *SVP* is better than *Biased* (*p-value* $= 0.0$)
### Precision
(same as for F1 above)
- Mean *precision* for *DT*: 0.8327, mean *precision* for *NB*: 0.8209 $\Rightarrow$ *DT* is as effective as *NB* (*p-value* $= 0.0893$, *5% corrected ANOVA power* $= 0.8498$)
- Mean *precision* for *DT*: 0.8327, mean *precision* for *MLP*: 0.8365 $\Rightarrow$ statistical test inconclusive (*p-value* $= 0.4012$, *5% corrected ANOVA power* $= 0.2196$)
- Mean *precision* for *DT*: 0.8327, mean *precision* for *RF*: 0.8707 $\Rightarrow$ *RF* is better than *DT* (*p-value* $= 0.0$)
- Mean *precision* for *DT*: 0.8327, mean *precision* for *SVP*: 0.7557 $\Rightarrow$ *DT* is better than *SVP* (*p-value* $= 0.0$)
- Mean *precision* for *NB*: 0.8209, mean *precision* for *MLP*: 0.8365 $\Rightarrow$ *MLP* is better than *NB* (*p-value* $= 0.0348$)
- Mean *precision* for *NB*: 0.8209, mean *precision* for *RF*: 0.8707 $\Rightarrow$ *RF* is better than *NB* (*p-value* $= 0.0$)
- Mean *precision* for *NB*: 0.8209, mean *precision* for *SVP*: 0.7557 $\Rightarrow$ *NB* is better than *SVP* (*p-value* $= 0.0$)
- Mean *precision* for *MLP*: 0.8365, mean *precision* for *RF*: 0.8707 $\Rightarrow$ *RF* is better than *MLP* (*p-value* $= 0.0$)
- Mean *precision* for *MLP*: 0.8365, mean *precision* for *SVP*: 0.7557 $\Rightarrow$ *MLP* is better than *SVP* (*p-value* $= 0.0$)
- Mean *precision* for *RF*: 0.8707, mean *precision* for *SVP*: 0.7557 $\Rightarrow$ *RF* is better than *SVP* (*p-value* $= 0.0$)
- Mean *precision* for *Biased*: 0.4995, mean *precision* for *DT*: 0.8327 $\Rightarrow$ *DT* is better than *Biased* (*p-value* $= 0.0$)
- Mean *precision* for *Biased*: 0.4995, mean *precision* for *NB*: 0.8209 $\Rightarrow$ *NB* is better than *Biased* (*p-value* $= 0.0$)
- Mean *precision* for *Biased*: 0.4995, mean *precision* for *MLP*: 0.8365 $\Rightarrow$ *MLP* is better than *Biased* (*p-value* $= 0.0$)
- Mean *precision* for *Biased*: 0.4995, mean *precision* for *RF*: 0.8707 $\Rightarrow$ *RF* is better than *Biased* (*p-value* $= 0.0$)
- Mean *precision* for *Biased*: 0.4995, mean *precision* for *SVP*: 0.7557 $\Rightarrow$ *SVP* is better than *Biased* (*p-value* $= 0.0$)
### Recall
(same as for F1 above)
- Mean *recall* for *DT*: 0.9533, mean *recall* for *NB*: 0.4189 $\Rightarrow$ *DT* is better than *NB* (*p-value* $= 0.0$)
- Mean *recall* for *DT*: 0.9533, mean *recall* for *MLP*: 0.9418 $\Rightarrow$ *DT* is better than *MLP* (*p-value* $= 0.0118$)
- Mean *recall* for *DT*: 0.9533, mean *recall* for *RF*: 0.9567 $\Rightarrow$ statistical test inconclusive (*p-value* $= 0.3276$, *5% corrected ANOVA power* $= 0.2558$)
- Mean *recall* for *DT*: 0.9533, mean *recall* for *SVP*: 0.7547 $\Rightarrow$ *DT* is better than *SVP* (*p-value* $= 0.0$)
- Mean *recall* for *NB*: 0.4189, mean *recall* for *MLP*: 0.9418 $\Rightarrow$ *MLP* is better than *NB* (*p-value* $= 0.0$)
- Mean *recall* for *NB*: 0.4189, mean *recall* for *RF*: 0.9567 $\Rightarrow$ *RF* is better than *NB* (*p-value* $= 0.0$)
- Mean *recall* for *NB*: 0.4189, mean *recall* for *SVP*: 0.7547 $\Rightarrow$ *SVP* is better than *NB* (*p-value* $= 0.0$)
- Mean *recall* for *MLP*: 0.9418, mean *recall* for *RF*: 0.9567 $\Rightarrow$ *RF* is better than *MLP* (*p-value* $= 0.0001$)
- Mean *recall* for *MLP*: 0.9418, mean *recall* for *SVP*: 0.7547 $\Rightarrow$ *MLP* is better than *SVP* (*p-value* $= 0.0$)
- Mean *recall* for *RF*: 0.9567, mean *recall* for *SVP*: 0.7547 $\Rightarrow$ *RF* is better than *SVP* (*p-value* $= 0.0$)
- Mean *recall* for *Biased*: 1.0, mean *recall* for *DT*: 0.9533 $\Rightarrow$ *Biased* is better than *DT* (*p-value* $= 0.0$)
- Mean *recall* for *Biased*: 1.0, mean *recall* for *NB*: 0.4189 $\Rightarrow$ *Biased* is better than *NB* (*p-value* $= 0.0$)
- Mean *recall* for *Biased*: 1.0, mean *recall* for *MLP*: 0.9418 $\Rightarrow$ *Biased* is better than *MLP* (*p-value* $= 0.0$)
- Mean *recall* for *Biased*: 1.0, mean *recall* for *RF*: 0.9567 $\Rightarrow$ *Biased* is better than *RF* (*p-value* $= 0.0$)
- Mean *recall* for *Biased*: 1.0, mean *recall* for *SVP*: 0.7547 $\Rightarrow$ *Biased* is better than *SVP* (*p-value* $= 0.0$)
## Practical Usefulness

Binary file not shown.

View file

@ -3,4 +3,5 @@ pandas==1.5.2
scikit_learn==1.2.1
tabulate==0.9.0
scipy==1.24.2
seaborn==0.12.2
seaborn==0.12.2
statsmodels==0.14.0