From 403e7bfec55bf0ae7b2ad2690f75f1c01c28415b Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Mon, 29 May 2023 23:16:09 +0200 Subject: [PATCH] feat: add argument for user and anime threshold --- midterm/code/main.py | 47 +++++++++++-------- midterm/report/report.aux | 19 ++++---- midterm/report/report.fdb_latexmk | 15 +++--- midterm/report/report.fls | 8 ++++ midterm/report/report.log | 74 ++++++++++++++++++++++++++---- midterm/report/report.out | 1 + midterm/report/report.pdf | Bin 18562 -> 23896 bytes midterm/report/report.synctex.gz | Bin 4306 -> 20847 bytes midterm/report/report.tex | 35 +++++++++++++- midterm/report/report.xdv | Bin 20600 -> 44220 bytes 10 files changed, 154 insertions(+), 45 deletions(-) diff --git a/midterm/code/main.py b/midterm/code/main.py index dc2d75b4..b937cda7 100644 --- a/midterm/code/main.py +++ b/midterm/code/main.py @@ -50,17 +50,18 @@ def merge_rating_anime_data(rating_data, anime_contact_data, debug=False): return rating_data -def split_data_below_thresholds(rating_data, data_name, threshold, debug=False): +def split_data_below_thresholds(rating_data, data_name, threshold=-1, debug=False): """ Removes data with data_name which is below given threshold """ - count = rating_data[data_name].value_counts() - rating_data = rating_data[ - rating_data[data_name].isin(count[count >= threshold].index) - ].copy() - rating_shape_cut = rating_data.shape - if debug: - print(rating_shape_cut) + if threshold != -1: + count = rating_data[data_name].value_counts() + rating_data = rating_data[ + rating_data[data_name].isin(count[count >= threshold].index) + ].copy() + rating_shape_cut = rating_data.shape + if debug: + print(rating_shape_cut) return rating_data @@ -136,13 +137,15 @@ def get_data_info(rating_data, debug=False): f"Min total rating: {smallest_rating}, Max total rating: {highest_rating}") -def preprocessing(rating_data, anime_contact_data, debug=False): +def preprocessing(rating_data, anime_contact_data, debug=False, user_threshold=500, anime_threshold=200): """ Preprocesses data for making model more accurate and/or faster """ rating_data = merge_rating_anime_data(rating_data, anime_contact_data) - rating_data = split_data_below_thresholds(rating_data, "user_id", 500) - rating_data = split_data_below_thresholds(rating_data, "anime_id", 200) + rating_data = split_data_below_thresholds( + rating_data, "user_id", user_threshold) + rating_data = split_data_below_thresholds( + rating_data, "anime_id", anime_threshold) rating_data = combine_name_and_ratings(rating_data) rating_data = rating_data.drop(columns="rating_x") @@ -184,12 +187,13 @@ def predict(prediction_model, pivot_table, seed=42, anime="RANDOM"): ) -def create_model(pivot_table, metric="cosine", algorithm="brute"): +def create_model(pivot_table, metric="cosine", algorithm="brute", neighbors=5): """ Creates model based on neaarest neighbor for anime prediction """ pivot_table_matrix = csr_matrix(pivot_table.values) - model = NearestNeighbors(metric=metric, algorithm=algorithm) + model = NearestNeighbors(n_neighbors=neighbors, + metric=metric, algorithm=algorithm) model.fit(pivot_table_matrix) return model @@ -197,7 +201,7 @@ def create_model(pivot_table, metric="cosine", algorithm="brute"): def handle_arguments(): parser = argparse.ArgumentParser(description='Example script with pyargs') parser.add_argument('--data_limit', '-dl', - help='Specify data limit, Recommended at least 50k', required=False, type=int, default=-1) + help='Specify data limit, Recommended at least 500k, set to -1 for no limit', required=False, type=int, default=-1) parser.add_argument('--seed', '-s', help='Specify seed', type=int, required=False, default=42) parser.add_argument('--debug', '-d', help='Use debug (more information) prints', @@ -213,17 +217,24 @@ def handle_arguments(): required=False, default="brute", choices=allowed_algorithms) parser.add_argument('--anime', '-an', help='Specify anime to choose', required=False, default="RANDOM") + parser.add_argument('--neighbors', '-n', help='Specify number of nearest neighbors', + required=False, default=5) + parser.add_argument('--user_threshold', '-ut', help='Specify minimal number of votes required for user to be included in the data, set to -1 for no threshold', + required=False, default=500) + parser.add_argument('--anime_threshold', '-at', help='Specify minimal number of votes required for anime to be included in the data, set to -1 for no threshold', + required=False, default=200) # Parse the command-line arguments args = parser.parse_args() # Access the values of the arguments - return args.seed, args.debug, args.data_limit, args.database, args.metric, args.algorithm, args.anime + return args.seed, args.debug, args.data_limit, args.database, args.metric, args.algorithm, args.anime, args.neighbors, args.user_threshold, args.anime_threshold if __name__ == "__main__": - seed, debug, data_limit, db, metric, algorithm, anime = handle_arguments() + seed, debug, data_limit, db, metric, algorithm, anime, neighbors, user_threshold, anime_threshold = handle_arguments() RATING_DATA, ANIME_CONTACT_DATA = get_data(data_limit, db) - PIVOT_TABLE = preprocessing(RATING_DATA, ANIME_CONTACT_DATA, debug) - MODEL = create_model(PIVOT_TABLE, metric, algorithm) + PIVOT_TABLE = preprocessing( + RATING_DATA, ANIME_CONTACT_DATA, debug, user_threshold, anime_threshold) + MODEL = create_model(PIVOT_TABLE, metric, algorithm, neighbors) predict(MODEL, PIVOT_TABLE, seed, anime) diff --git a/midterm/report/report.aux b/midterm/report/report.aux index de7868f8..463b0deb 100644 --- a/midterm/report/report.aux +++ b/midterm/report/report.aux @@ -14,14 +14,15 @@ \providecommand*\HyPL@Entry[1]{} \HyPL@Entry{0<>} \@writefile{toc}{\contentsline {section}{\numberline {1}Progress}{1}{section.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {2}Results}{1}{section.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Presentation}{1}{subsection.2.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Plots}{1}{subsubsection.2.1.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Tables}{1}{subsubsection.2.1.2}\protected@file@percent } -\@writefile{toc}{\contentsline {paragraph}{Seed}{1}{section*.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Results}{2}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Presentation}{2}{subsection.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Plots}{2}{subsubsection.2.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Tables}{2}{subsubsection.2.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {paragraph}{Seed}{2}{section*.1}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {3}Challenges}{2}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Failed attempts}{2}{subsection.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Corrections}{2}{subsection.3.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Results and findings}{2}{subsection.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4}Finishing project}{2}{section.4}\protected@file@percent } -\gdef \@abspage@last{2} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Corrections}{3}{subsection.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Results and findings}{3}{subsection.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Finishing project}{3}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Embedding more data in user and anime}{3}{subsection.4.1}\protected@file@percent } +\gdef \@abspage@last{3} diff --git a/midterm/report/report.fdb_latexmk b/midterm/report/report.fdb_latexmk index c6e09ab0..1d2ea9bf 100644 --- a/midterm/report/report.fdb_latexmk +++ b/midterm/report/report.fdb_latexmk @@ -1,11 +1,11 @@ # Fdb version 4 -["xdvipdfmx"] 1685391330 "report.xdv" "report.pdf" "report" 1685391330 0 - "report.xdv" 1685391330 20600 f078bc2b2ced2fc2e41ec88d8ace67b6 "xelatex" +["xdvipdfmx"] 1685394955 "report.xdv" "report.pdf" "report" 1685394955 0 + "report.xdv" 1685394955 44220 7ffc5e08598d79076d223ac2a2fe2f18 "xelatex" (generated) "report.pdf" (rewritten before read) -["xelatex"] 1685391330 "/home/kuchy/earin/earin_project/midterm/report/report.tex" "report.xdv" "report" 1685391330 0 - "/home/kuchy/earin/earin_project/midterm/report/report.tex" 1685391329 2040 69a2ecee5e6200f6673defc4b47f00a6 "" +["xelatex"] 1685394955 "/home/kuchy/earin/earin_project/midterm/report/report.tex" "report.xdv" "report" 1685394955 0 + "/home/kuchy/earin/earin_project/midterm/report/report.tex" 1685394955 3734 295cc759a2472e638d3fb6d28689ee4f "" "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1680514707 3524 cb3e574dea2d1052e39280babc910dc8 "" "/usr/share/texmf-dist/fonts/tfm/adobe/zapfding/pzdr.tfm" 1680514707 1528 f853c4d1b4e0550255e02831fdc8496f "" "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1680514707 1524 4414a8315f39513458b80dfc63bff03a "" @@ -45,15 +45,16 @@ "/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1680514707 5766 13a9e8766c47f30327caf893ece86ac8 "" "/usr/share/texmf-dist/tex/latex/listings/listings.cfg" 1680514707 1829 d8258b7d94f5f955e70c623e525f9f45 "" "/usr/share/texmf-dist/tex/latex/listings/listings.sty" 1680514707 80947 75a96bb4c9f40ae31d54a01d924df2ff "" + "/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty" 1680514707 205154 31132370016e8c97e49bc3862419679b "" "/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty" 1680514707 77021 d05e9115c67855816136d82929db8892 "" "/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1680514707 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" "/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1680514707 9714 ba3194bd52c8499b3f1e3eb91d409670 "" "/usr/share/texmf-dist/tex/latex/url/url.sty" 1680514707 12796 8edb7d69a20b857904dd0ea757c14ec9 "" "/usr/share/texmf-dist/web2c/texmf.cnf" 1680514707 39911 2da6c67557ec033436fe5418a70a8a61 "" "/var/lib/texmf/web2c/xetex/xelatex.fmt" 1681763698 11046108 24dffefc9850ac1939834d68c95379b0 "" - "report.aux" 1685391330 1770 8e01609f5240f79889437deb07594cdd "xelatex" - "report.out" 1685391330 1102 2cbb39a98792aded098f7ea274b20901 "xelatex" - "report.tex" 1685391329 2040 69a2ecee5e6200f6673defc4b47f00a6 "" + "report.aux" 1685394955 1914 4bfc226f6855c388cee78af5581432ff "xelatex" + "report.out" 1685394955 1363 3cd7533541c949103c3ce99ee358800f "xelatex" + "report.tex" 1685394955 3734 295cc759a2472e638d3fb6d28689ee4f "" (generated) "report.aux" "report.log" diff --git a/midterm/report/report.fls b/midterm/report/report.fls index 4afaf887..976fa21a 100644 --- a/midterm/report/report.fls +++ b/midterm/report/report.fls @@ -405,6 +405,14 @@ OUTPUT report.out INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty OUTPUT report.xdv INPUT report.aux INPUT ./report.out diff --git a/midterm/report/report.log b/midterm/report/report.log index 8abf917d..934cc03b 100644 --- a/midterm/report/report.log +++ b/midterm/report/report.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Arch Linux) (preloaded format=xelatex 2023.4.17) 29 MAY 2023 22:15 +This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Arch Linux) (preloaded format=xelatex 2023.4.17) 29 MAY 2023 23:15 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -201,19 +201,73 @@ LaTeX Font Info: External font `cmex10' loaded for size (Font) <14.4> on input line 8. LaTeX Font Info: External font `cmex10' loaded for size (Font) <7> on input line 8. - [1 + (/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2023/02/27 1.9 listings language file +) (/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2023/02/27 1.9 listings language file +) +Overfull \hbox (99.60498pt too wide) in paragraph at lines 16--17 +[][][][][][][][][][][][][][][][][][][][] + [] -] [2] (./report.aux) + +Overfull \hbox (20.40417pt too wide) in paragraph at lines 20--21 +[][][][][][][][][][][][][][][] + [] + + +Overfull \hbox (70.80469pt too wide) in paragraph at lines 25--26 +[][][][][][][][][][][][][] + [] + + +Overfull \hbox (99.60498pt too wide) in paragraph at lines 28--29 +[][][][][][][][][][][][][][][] + [] + +[1 + +] +Overfull \hbox (20.40417pt too wide) in paragraph at lines 32--33 +[][][][][][][][][][][][][] + [] + + +Overfull \hbox (6.00403pt too wide) in paragraph at lines 35--36 +[][][][][][][][][][][][][][][][][] + [] + + +Overfull \hbox (13.2041pt too wide) in paragraph at lines 36--37 +[][][][][][][][][][][][][][][][][][][][] + [] + + +Overfull \hbox (6.00403pt too wide) in paragraph at lines 39--40 +[][][][][][][][][][][][][][][] + [] + + +Overfull \hbox (49.20447pt too wide) in paragraph at lines 40--41 +[][][][][][][][][][][][][][][][][][][][][][] + [] + +[2] +Underfull \hbox (badness 10000) in paragraph at lines 64--65 + + [] + +[3] (./report.aux) Package rerunfilecheck Info: File `report.out' has not changed. -(rerunfilecheck) Checksum: 2CBB39A98792ADED098F7EA274B20901;1102. +(rerunfilecheck) Checksum: 3CD7533541C949103C3CE99EE358800F;1363. ) Here is how much of TeX's memory you used: - 8689 strings out of 476683 - 138341 string characters out of 5809790 - 1852018 words of memory out of 5000000 - 28875 multiletter control sequences out of 15000+600000 + 8873 strings out of 476683 + 140477 string characters out of 5809790 + 1887018 words of memory out of 5000000 + 29053 multiletter control sequences out of 15000+600000 513616 words of font info for 43 fonts, out of 8000000 for 9000 1348 hyphenation exceptions out of 8191 - 72i,6n,76p,353b,855s stack positions out of 5000i,500n,10000p,200000b,80000s + 72i,6n,76p,461b,1742s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on report.xdv (2 pages, 20600 bytes). +Output written on report.xdv (3 pages, 44220 bytes). diff --git a/midterm/report/report.out b/midterm/report/report.out index 3a8e551f..50668588 100644 --- a/midterm/report/report.out +++ b/midterm/report/report.out @@ -8,3 +8,4 @@ \BOOKMARK [2][-]{subsection.3.2}{\376\377\000C\000o\000r\000r\000e\000c\000t\000i\000o\000n\000s}{section.3}% 8 \BOOKMARK [2][-]{subsection.3.3}{\376\377\000R\000e\000s\000u\000l\000t\000s\000\040\000a\000n\000d\000\040\000f\000i\000n\000d\000i\000n\000g\000s}{section.3}% 9 \BOOKMARK [1][-]{section.4}{\376\377\000F\000i\000n\000i\000s\000h\000i\000n\000g\000\040\000p\000r\000o\000j\000e\000c\000t}{}% 10 +\BOOKMARK [2][-]{subsection.4.1}{\376\377\000E\000m\000b\000e\000d\000d\000i\000n\000g\000\040\000m\000o\000r\000e\000\040\000d\000a\000t\000a\000\040\000i\000n\000\040\000u\000s\000e\000r\000\040\000a\000n\000d\000\040\000a\000n\000i\000m\000e}{section.4}% 11 diff --git a/midterm/report/report.pdf b/midterm/report/report.pdf index 5d87df250d5986447c44494e1b10cf9d90aaf394..1414c85088267b57253f011d56457d8b6c43ac53 100644 GIT binary patch delta 21259 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 iuP=y(xb*WYiNA!uV;u~5Y31Y<4t$- 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

77{!88XDB`Q|6^%hs$t6fRL$Zs?Pu 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 H1^52|Ud7J7uzHkMZbEUQo>_I4-PNJT+{j##hO zmAoD<_j?V69qo^&b|^RZ;Jh8r?-^xaO_7px8bhy;ULNFNe9d8y+LVwqvyO{1zt!~b1TSR_i%5g5Bn6RR>5zV%wl*$&jkHJX-$~N z?-#@Ga2JKruhQE;D$-A1*Lit8e5l@6-dT7yMvjZ%&)?s!r|HjmxataTI>L~C*>!di zOJ}aPzHJx3o4Eh0BY1lnXD9G_e)#*w4ZD8PQ%Ju7-qGQCeYpLwe@Qfd_V6_B_40JN z?e=s};l39hO7G?T`aFFybT)!TFhzK=x1CAQenB8~$%*)QcQ~Brr0wbU^a6q1-7u`( zAEepf0s8%yk@OQAo@ZXz1lFes<{`YE_0j}uFKB5Y{^yN5ElApHt#9G)+(+%(!O}On zQv`ibD>edDFPY+tm2DT}(jA-c!U4uw!lZA@E%X<+^IZAtDu?&!qW7iMtksw69{O`nH`nXq z>C}7BI~3Nu?;ic`<@IzkUWmk7S{^~W_gzU^tQe$@5y zF_P7(4Ay3|=t}7OJ#Rv?|mtn8> zU5tkc?SPY5>c`&qwzmsy9$zQ-hpVGrZ4Jh|-i~FAcT+F_^RX99^I$gq`^}KL?7+^B z7l78wz7W%c*TXXsjZg=2Pm0V7n2+{4eaG7lKkJ-}b7#lu^b27Vrar4~7LVtDy4xOz z1<)nsegBYuF(;z7Zs(M6%{(2m=68IVbVq;y2yD8S5e1~+OVhlvwubT)S~er@9>`;7 z%ElH`z8=_?oiPAh;%i3nwUQgV$Z#Z_xd0FZzt$|XY6;rl3Vyv^&W}bKOTTSi)&`VB z@Z>#iqKC)HCwV!LB_p@0dfu`=VbZ+2VtV5l*8kT$YcQf_S~l@k%@`WW;maw6gd`am zq-s`Ey~f<~2PdsGG7{u{*Z7&F~Af~_Cv5bpkZ?{ml_mAP1NQ?>A!+<}YYs~1i zjL+ScWha{v!YC&C7!7^-X$P+a)<<%q{ugfWE*_YR)-Ea4DFo}~-jCwx zycIQ`#dC_*U*w+)Q~14k`Ie7!Mh&npVr4Xp1@;pqNAf*NzY?TS;CN$|7+1Zf(EulV z%Xl%&!{p9*$17_S2tzS^jVM+1gWkvsV~!%nc6WUF>p5_?v+)oRPXqOTRoJN5Fck_*~?O*G}@K03hfToC48lCNOYLv^j_7PbCD0dq)ut7zi3ei+l-;7 zd$35Z7He#VPMF=@pq8B6$!^ZlbfSoj8GOi|RUXXy4_)VKdmf%oVaVZe_Ltx7>3pU> zELO;}S058%G!sT1f9&Szq-*$jr|lJjsVK)hN)QAej7x)fj1Sa^ffA%Lvu)fNsPOJz*_fYYbf6$!P!GUc zC8r!jWDbJPncVgRJO`>?E>YpWH2EZqF*dy7dIVgI-(@CBSMXwE=Yex)Q=r1|z@oWk zcfLwi`^n0M)OS7$(BDGu^eGeGDNm_YXR|s*tume#ZeP>i#Gxt0X-?wn?gm1(Q2;eC z3{3|YAdk?V)5R|Q?Bk7>REt}slqS^5x+5vbIUw?1{>L$dU%ZfH?UCZZ3cz_O}yC-Vi_qlV6 zkLuj}oB=S9zY-aidUtU7kFmertis5nKUt>8{6|>M?@5uOGqX`kU5cSKmBJHg2=pTt zl-D<8SwKz;M6Xf{hEv15g@^%t$X@|s-vD0HT~$#C0ZBi=qUSW6LT6ejl^AdBCqi`g{!Qd(p@&B)7Z%dLxd6-3S=#^Q z$7Wj2nT_u^3)V^hIY%CmIYoG?bTtU!?ibuMw=JV!At-t{M2%#bbIq$kQ$S$lj0*(9 zSg%fK;8vsRcL4ivV71aBWx$OB(t4ge6@prw9DlJ{xsSm7&I=V=ytLd6c2h6u>;#qp zFM9=xMi4`U*gmjxrh4NMFK9^ z4O@+xt?wFdhEix=8jHEpVjd3;bald9C^m()Ynn0Agt&MzvLE}1N$~f0&Ot7(V?mnE%exut7*@W!f zu_RJvH3?sOQz1%E+c}QN?Rz)XRQMT*S(!983N4o!IGJT4>Ka62O{FRh#q`R#b_|HiD#0t1^J}#f$QW~(7;|_emNEM)tGi>Bs)Q~Hp zz5de3tEZX)`V@Z-Ye4Y^;ZxXleSb0U|7|a{iNdkxP!9;iEib9TvK?1|5Ci*TgZaMc z_>F1#0uz6!b5x;tKkBFE7mK0MO(H!nQVXmQq7)`B`|OjDdiXK>rNay4>75H1znzN- z_5>Yft{Vx?bsYTWD(}0AQSV_v5M>;9jtCBtSTS>vnC`d4^TQ)muZL`AH`cP%MWpgA zx;P(Hu=uq6dx0!x#f#EWl&E;LaD9RY1it|i>nZ-oMnTO%(2}VC$deR`&F4#iI3+_3 z6ULY_Hj?xeIdj=5;8Y4W4vg^u6zD-6#HNWdC&B#tIY2I0!w<`mVhc_bQ5j`-(q)kA zv`~Fw&%cbs9i&LYOtM{k#wTK9J}PFyymJvXede(B{d?jn)grYpasu*3+GN~sDT@=C zR-*s@V?p1CN{x~!>3dQfh!j-EI)T+O67eSQXc8q`{ie5isqXWScOg)(9;?vti>xpJ zvGGkZx{gpyoQ*2YtWKX*dc6K3J)Te}p}t8+s-R285=ZDfl>jjtuA)aazf_jJtwOlWj0D4F@)HzY|i0Cm=ej24S_wic#X95?*7wBtFf$%Qlx^9|uW`7h`v#G{c z(jYXWL%B`@v&p>De!~^5*gn}DF4mM>mOki-3BVMh@~`(K(b54KK|`ef^Y!v!lrsYDQ4qkA&PFzwqr<--6c#?^51&g`^JlE#U# zE0=Q|`XHYUjB5x^!*3z61=5suh;>d9up*GXn~S=>C?_bFc2~!3#6k*Od@0YTLh!*B zYNSfDD3=Oo;#J?!s*b6#-@rhX^ZyZOM`{Zd!H~2JPd}))$dhv|IwHM`f@&CeN|&gZ zm@?Ek>V5TWFtFjFCUb`ooGv~h8ciFekgR~Z_`SM&go?AZT4w;8BR49;yyjcMF1AnN zeSeOBzEA`=)h18~9HQmx`ACJ3rHv@-%<8vNM`PCfD>%O6_#qg01T8sTW5Ra(q)Q6x zfcGN?pc$*t?Pe5SQWOanFw-~3(AKFb4;y=D;ovscI|7F7+qs|7U&Vf;t!73|@|g&JLRzfccYuWnGat`N)j zqpryC@DQ3m;~SxZ(E*4*W~+sh3UidCqdQ=a5Fg`_m=?!sfi0+7Fx0X?Rd z-@kAFW*7~%Ew>TGo7Fq|?C7O;-#m31pVD$Pb*>ZvYT2XkTG4lq?IQ{$km}C$Fsg2i zy)*WvkOWh!R58S+r*ZrtR4jIEly!UQ0m$u7b#q*ex%ZxEIA#_C*~!j;?>5p$6KiWE zv9^Hk={P*N!T-dC?PxJePh}%1xy27HM18m z`z}KjGyBBnx2{{r=5PjUW|GptN#w0>>gTe6R}Vmk9;RJtKh@@WqjQTBC*;tauKM;t4%7)|pg&O` znvsc?a$9H5Gjs^>9xDKK^5~?k&BftP&q_<8d|6$N0uUBe+ETpQ2vRwY-x6#p6&o2^ z{F5E-Vc4)z$2rN9zbTOPM{9aGVFH04V)?sDDP+k~!Q3^*oZVTm!P1V;r2RN|Fk9-h z508qv?-t3gH`_ZQWEUPkp9R&4k0@)Lr~F`|OSI2)S|0YWi>3u|8rUNrB!+q_lv$u) zK}D(N>6W;xpbqwEf$xFuI(~wQ_{JE<+?Ak9VRR!K>zKt5j;^j_-SLY}>bl2;`;k~O zwxP#HMj&1R_b(58dsiy=F|xzVS1X(Q1B4Hm4Ijdh97Y|B*PNXDnQpS5{B@Eoxf^WB z0Cru;SF_-Pi*tPhb&NKP+aAL$6XQIFT<_)@G;2C}6|)bKHGFp&W zGaMPjiK~>{!fYdS%ypon_I}nT`tvZN;=U}4Ua_sI)^wB*(zKm%g+l&SEU$&eGOO?#$Q14K9E~)+%b@N;G+8NHNPGqVlw~2XUJJ9e(q-aacjXoUj#M z@VxLi;y<_)MJUjdRx*LZGKFzvgNURoqm2?$)RnFSCzeT6LBS|AbXNlliC0zo=j1*~ zk~+fx6UvDuN;3K}Yxc_U#sGX&B`2Pc>Mm?DZbxVOAV|J<&h_MvHuW4fm-J-0oc^dK zh3m3)ti;gepSj`^LO8pC%_uH>Hm;s{-2;~x@e~#k|BZd6*!nvDN?iY&i!EPb)7`i! zRK6+Qk}8H-xQv$cwrDgze2+AqBIU3w_#w`}K~OlN+N%zkt3v~&EsbFw;R;wvPN%wB ztNES4W;3MgBRYtJSxs1p(v~}Gg2;FDK3>d9Uo+M&YFuA7bpP(*&J=f`5vx(UaP-SX%eHXEHdlC-=*u3BBjv%~M zDR$&+2&b((60LBLg)L}{s>{jdP##_e)KD+Qq&Y5`xQ?(S>&h+9~r@oFTuzgI;9BC&usVnyV(5L06JJ7V8Xf(givHKHK zI=vC>REO@K+Rb22`3}&WUic3I&$8ElCUpgF-T#4M zRCEAI5Cy*e1^dVPF59T{P9WAQIp0|nbnj_B4;8>sM!eSy5cnTWIlz*_a=ZK|a&>&~ zV|Q_UlI+kWI#6Al0eJF6R(D8S&!5INBR5`QCcTReOcZ1AcS~nXK~E$^f(vo;G26mu zY{uAkEOCSBqibpBGkYSWyLTvC$bqpVWDNAz1V|zF8c7%Rn|Wj%r^)mKdjDghr~x)xM4uY1G8E7qh48yB zeQ)aWpAp2fRwwQs`=e(eyG*lJcvX(disb^CI-9s{&0%C`>P>ND>g*OBXcWv)Dlg-# z>TI1ZJC|zP89Ilmsy14eVO}&H23AnT9zpJImN!yj z$flbJ!I5^5=R5QtIDa$maR9bB879k7<4DiSUX76k0-I-7)RkR$!uM=~J6N@B4hh4A zTMhBXjah*7o<1vvJ%Ei=|27^(@YQ4agXp=HKmDM1lscYZ=?|tn1m&C~*MF4Yn(p8y zD(G8B6$)|ltqfTAGUKE}3iu_QKD^Rd_ffH8hslqy9a&R3KP5muZ$xGjAXH3f8=^t# zQn)MV9yo2u$iv~sd0+c zY^7meEVBK0egV2cE;?l@yU?WJnM*8}#2UpKG$oR3%TaIdgNlQ^Q8e)MDpR3`8J?+4 z#QFcQkczg*I0~xE4W0wD)UPI1JmM5i)L_T5C60w91vmQxv@o5jsRjzLU= z=+vK6_XfFOlJHk05)*YZ`Qzr%#D0=f&_S0vn8*pd55G%tKeXzRCkd_}Oym}erDs+X zsh4c0sIjOw5Nv^g=-J;cx^N)5rmH)I$o<^}S^JxG0TR;eqJ0F5L_8pPeok1hW>2MB ze9h-u>iVSAw!VI^V2}fSGQ*Rt)E65f`H<)Ssd$1=1NKTn8oo}D5}7mvGU!8pp;^c7 zUN=B76~8kg;zhSGw05Z9K5};7q-!t)Rhs-Q}WNbtP*igu@vTRSa6=k7~BG&}+ zW3^4+sBLq($C&tl^*mM|sznFBZ%krQ;a+m-m9PA_4bd&s*~Ua7m`vY1N;(UZGXHC# zY#bAW>y^50{XwM=>rHtv`9I?S?xaS<|Dn_G-D)@Ehz}WU9iT@l^8eNplHMrJ6&590 zta0&aDsdsS{5;L>f*jWJYxJNeuQz-thKrD*_IsIfPhRX7j)*zqR2lM6(qu)XIja?I zzW%CqaQKRkJd^%gMhd$&)j-ZuLxGJ=Wuh6Y!fHU?7BBT2%*g8Rg&UnvY((!yHfM_c zm9v!aT%LSIQ&{;G4FUn`f)_2e`1X-L%6w2Q3z9JH6pO{~Q<=iO)Pu0QMnzMPy2GuR zLfi1q9hYkrC?n7sBFYn7K=KD;r~)AVYs#b$=G(LZ{|sR=vWGql8_Xp0sXIN<=dCXp zVk6rszLpZA5hroQ1`}PBey#)?jSM>V{Q>F$GyGO4Ym7wA)RG%Ub3+K+=#w*b3*$Px zOE_AgtD&9LDM*dwy-GT2q2*l`wDn)7)yxqr&8k`d_o851cbgum;h{G@MP5;PFFsW? zr_TJmUM**=iaHl}=wq=vwczj%(30Wc6WIkHzhuW8q?uN$>zSdd0mt+_ut-;_=o+c+Ey}ZzV55Bh0 z?)>%q&pfxTz+}a^8)Qpy5DlUg*r7QWY;|sD0KKe$jgyQcY)F6TCiiz(wXb>kCW4gc zR{~`MVZpgWyWij}E{rNYajNeZpBLOlLdOz63j7DoN& z!uq6~1ktS*!eCJU$M2F5lC^0RR8h5|b`i%PFx^uGnIP2-W{rUH)Prwh%yQ2D(Z_gW z$VvnqE~gssq5_Ps9&-}V&&=#49sSas)K$%0;b%sO1Q^$$k0(6PatK|T*=i~$jhyrT z89cc)Vgo;k&h5*A`)e&1dC6EA4Tyap7cwma_)>t8Bx7yA9a;Aib|oRA(z+o(53t?$ zald}e`Eh16>#?$MZ@5GKalX%{A%vXW5)z!lqnj3&4|m$0z`;fXs|=HL&rnbpqrc! zOUyYHt@whl(Zf*ITR{Jr4Y5W+(M#?zJBM`?R9ydl!3Ug=*JpXQem-Sk?}HKdG#=TS zQX)%%8^7eW&gU^#Y+<+j#p?UAsF!|s@fCs8{=X9YfDQed9IQSAhWV^+)=uTZ!?VXd zVs3DKU)w3PRnQqZ031>A(l?&D7GK0^^V-o)ORmnmf6j4qb}RIhEkY`O(6c-%HUfF~ z2{eBJVtbAsuG@}ex?@Tcqok1~LQL{9$aITs;+`J6XKH|h10b#L@MHA0?38m%e|T=O zO@EgjE%T9+ah}TuR=UTQP$jJT#P>!%7`kO}>jO9&jF~@=hOMRxLn4p2BzrB*`9GX% za&pQK1EZ3?wGVZ9@2{X(q=-Lu=qj&TWpGjyg+VT1h3g8Z7>Kah9{@ZZ$O^l3$Int<&EqRg*iT1eaJ@=^4y_-DvbGA#f7h zczZ?F{w1P8Auf^A8_s2#R7*WS@c*8*lBHWGj~ocXrI}030T^~x`vd+9v0S6A7eQhr zrXX({mt>-@jEYCNWxoR@>k%j3YrIz|V;aGX72}H=r|D1SDflQvvFB%00^)V(|aafB-^+`4$KbyjFcEdn0=v zdVR}bb5I^!P&wW-?g?b~@Ib`KuC)Ez^OVLta%_j1G`D}EtCgAC3FHy>G4U9~-y`aV zI76eR6nC}fBN7Di6e<&wi`b}S3Y1Ihw2j+eRO&ANM=4_4Cflkc? zk@!ti4My)CqB|XK?9b5A!1T;VN;KL6&p)>;#r3^ z1?wM@=q2E<3Ibh%mz~Aj*i~&qDQi*LKmNg+Q^RSRgy@U2{srPIff!u^`H z3^L~VX>d<;Qee|nz-$IuFblnZW^S_#`kK9E`D8F)d|=KCKs?80jy%w#xqZ4^NW8Rik@fhL_v zAiaxu?lUxC%gzqNnqpQgs|{kpN2= zIAh(sj7VNBCe85{I0bKq2sPwc=mV;2)_HFpaPf*V>;O89C#C!5P5 z9qQngg8h>$hbMo)HR^{T@+x{fOznelF|8ieyA2e*EPys0b_IKaWq}jvAV6uWi zoWQ9X3J-FfTM7PrGk7`V^+~S`XJ3D1uQyN(B@V@@86+lMf~~9KHso4@MJ=&eG{u7_ zQtXR)?GODlm|jL4ko8n+JF)%Pk_&PSY8xnsAitHZ5nujVebGJbUKvgGUH+@T}!?;TTl&+d00W^eV!h7VEFFSufJvDo)xX^L>;aURsM{w zvQ+#mKpysvYy@T{Okxt96^GCO^P{XxrR%@s8su^%2c;S<61|~?#nL^IB|AW+_9f|^ zbe*-V zx_UoQbiaH9k<>)rnKrQ?qs87d;K&T!_x8OvRbnco+-5t}1*5n#jb(g8hL|r&zSB-f zo3u*f^MW`jv>L2)?9xm( z`EIw&Uv5P(WVu#vQU2dPcBO8ED%RpsYkn}~Jgv*T2~L<}F{_BaS-mD8w~W>R zs|k@{0XcuSJ=gkEi@0xFBrTguzm!G14Z+BGLS(2V4uX=5ha;fAXU5at2r5uyfGQmw( z9M}O~$sx;oB6UkFIw{}&!DQBlofn2SPyVVwK6zGU6B#^2*hIP`QqciS&aLUD^r7;H zJkFBn-OmRsZ41-_-9-a|xboGCvH3U%M*oMECLynr^5y3*k;Dg{gcNE+PKn|r9>osu z6|Q=LfZi7aKH6*;O|!CoQ8vDsgV4L3Fyn+Ugzg&yEwNw2hg|}^YdbpGKU)EZcKKc&E>SMI|9#7cs5;Eb~N?N`2=E% z*Gy|5zM96eE`BxSU{gPn4OSPMlL6S5D~c{QZTlTC4~^>MfS0RRY|hLrw@*Z04ws-t$`aW1u1y3zIw z+SHz0Ncj?3cnT45BXcKKs~M$kKgp)nRyEzDPpvAN*ED5Wi$6E2MdTi}XvpCadSF{b zfHttot&+%}JTMd8Ryf2Ndx@-zA@^5k5aIZ|W@xnit1KZ}D;3TXljeqx5ouU>=9HK< z72_0n6iaGc7#Ye&{7N!rpc?jgOb1Owp$y3G;_taAyB6l0}a>+ zxLPr1I;&2Q30M2FqSh{e45R+35-9Ah@yO|__r*LoB0F9v^sd@)vWCHc3Eisp; zIkw1A*%h^wYN~AF`4h2pWb}Xp?;kGUALw!n_8`OUSl83ewLFTQNW$So0teeTdVby4~nU zTtc>uR(HKBM#Q9bryhMdmtI%Axf;eiiggZ3OPr{EttQsk)zrU%%+2}JxprdEwH2}f zLrWq~?R#It65p7$>hIg-S2SGE4O&s}f0j)vqw!)3^kDHsQfa9=~Q?)5V-2eNy zyP+K~3++};3p<38$NVc!m1%B>H$Ms=&Wf31QRNjqh)sXY?Dd{QZuSd_poxklvM43p ze6gJumG2QP+b zMSLdaIKKwJEq~j-@1)0tI{Z1^^JhRIThbZx8vpW@4}2Ih$hd`RdW%tt)L&?0OQah~ zc<`dbOB6jP6XRW1`=vJp0j^C4BZENUi&CCM$mTM z%DlmIH;elE*dsRdlqqQ3;tCu{Jd|7-xl)x336yte$v@%1f5S(VgAeet`cIDM;9PLl z6~ja7eu|6O3(ridD7bF?l8!~Qiif+5NW~ZizxI#kJaY7!N2+7;3io)kt0}wd;bSRv zWL)u-;A91$TqedbW!A#fz~>C(#t3FEEF#@r@*pre=B;e*DJ++QM;KtUXMa{eqig## zmC8dTO5<>M#q&5>d$B`$ypPohW?`4;7FR%r1{~EmlTB$VcSe0(XBaV1FCx)EBr5_dJm^nWeh0I_gtoHp?vH3r@;K&%<}izEcmie_+}IO&FKo9*5}L)|20AfP0MizV;#Im> zm5}>M9`RN!4h{}$X3CFtw;F$oz;mlAwc`n)^G9yyV7x9i=MD&y6VI=3qV?I&Z3Z~z z+MSk-@mX|D&7&3}C|Ydi$#B^4tMl~wwNC^=n zm4MbClx!K*2@OoaIsO+!qGI1)8V&oUfkLqtj&cwP&Keoc*;?Gb*%GoV`L@NTohX+J zw9X-0ztuCEv-FG6121+z2&34l)7tHL^nmCAg7$1AD7EyB1~Zj1gp*}zU;fI`9zG?< zISbRJ4{LWQe{);Vk>9 z;;la{_J{@Vmh)=t&jjB=*$yvgd!%@N&;-QS63>UQ_$%EyR?M}Fy%k3t z{{XS*);p=SvoMnt)hRDhi#a=sd0P}27W*qcOLq1IOkOp2@`U$ta9YS#K$udTY1Ph9 zRJ?mPAuXv&TF|1hEek98`Mg-fMfP?wyDMoWyvLstwq$#^0s2#!cn?At*`ocJ;V?NI zfAUR%tL#Dk>$8i#XYLe)oAyCU>9GqtYpG~jXG1NA@dZot-IUw*YW!M?7krQAo@<&R z^gPu#7#fmABiXwci!J>xEt^XG-EITNdp9M^D+NE3x7T2{)W8roaG)0>>gq-aMIpIn zSD*xI&?l1bVw^1^>Wt`NQGLv!vbN@u_@3|e*^t}TM8^DD z?M~SK7$ zyut1u;yfBe<$x=08PZZL5p;cHg3JaD2K?ZR4dxksII@m_Qbjfg*#)wom96u7 zjFGWO4~h}C8w-IGhs*9Dmiz&+0o1uF*3!zfB-P<9a#lgM>Y<%PE$|ozzr1U^^z8r3Z=4 zs9}WF3f++eDo`6b?i6iGcFdm)J z39q432Ee5Gy0*f#pzjX0dy6aN4nQUjErilhxKG+8GV^e3@qEifQxz!;A5=@u_N;-? za$!nesUDaDsvcbHo$!76nw5sw5o>*2>RCq(L`OCcaHFJ)?ucM5jQh7#*ocurr(zeg zsA^0}SNkVq8992(6SOI8@r*Y&$gPAbE8|l#_lM?aP9}g~=P3A+$!o}xt`~!wg$zqk z$*ojXGdf_{{%0a(a}FY(WHvYtvM`k=;G)GtBh$g0Wb;O3!586T zWc?te>|3ZxF^D{#!DOfmUGm~`ooW&{CY7;cPN}3&Kgz*Xy~yF^z7xWW5A`21; zn)s9}iS7DY4sR%RgC7h0${1mxnu&tY|2k-7>h+ukIFQ#2J(1apCkl4~F_1;Gxs^l; zoqCw)wR$t7GUTbbdTd{+!ql;30J`ppRCYa9uWsUC+K&{j3``YP)D-oH_b@s35aTDl zUKK%f<>|Z>rMRu91u!SQ4G5pjpChh*Y(MVc_%2hPPpr-!$gbwA_ZU)Co~z#YryWz3QFkn51UJcqp-WA_HAb zTLy&wAA^-Sq6YSrt z_27BeiG*mi1fhCLUyt$NriGF(%MD1yfkd}$*(M?$j4a{)$ARc!j@;9>!PA;lhrNs= z-=W$nfOuEITSOa+)PP>JaG}_8n8KnJ{9P6!zMy&w!{Cyi`cVl9uok7h^4U#PKiy6@F|TnO{E{GV|V1v6ao)Lb5(uRXQ_|pMZ_BFL3AM9mfvcC*=7J zVTjAk6{*`A(r}*uhBy_ba8@>pHLY;PAq+42#whCk(fvG#RalI&0n=AB$n9D_$RQ4e zGC)^kQ(b98L0$CMlo|`6!8>dlKy=i?nu7SCvlP06Dm0AFf@Yyf8d>aumd>FpX>h3L zZkcvC>_c%(gxeuW2-DauY*=@I+Xb`%sM4yol?2ZB{CKI?qpJ`3)llCu1GVd;($R!9 zeK)xEQRzslLIBpfS5N=x7Ks|b{HSyoyMrnnhT)%;j_K;pN=NJIN2S9~_Hk*x+H^>d`U(A3_LHH*j<-(NT8+xLH)HN~ZxVjr-R7Aj4 z-Mm~;c_zkqAzBTfD9K`kl|u6n4%}IR$IRi*AH!< zDh3PjZ+o%F$+_&i?coA1B{bG0GPq~7ngFKejW?dSz&iM56Y*%vf6C78neoIY9%3dT z0OrlLwboSYI`(jqv;}p!IHDeqOS4MHc$_h??OUv^S1)|{y%q)`tUk{(8gEUMA#W7q z!xSPQP_PwN`^@gejc0=1?HzgNdVbB8!DVOWo0xsyvrob{6EOtBPX>&k5JbZSc-?7G zmG%9;4K zc^W8?;xHdbu@`HcE(S~?Pa3oaN%)~?brkX7lKa*whbr+i*u4BkH-R3}j26tb380}o zI*^FXPMrM5#bU5^cMi>Xr^1Eb8B)r$w}U!$m(Bq=Z#9`tI+8DjhpJ$9fffiy za8BsbLhST>B2I7rh9c|1Zw;4}Rrfr+kf;sK9)BC-6k`$bm2;HQ0$D2Z>Hsen!Nu+J zqu=3x=X3xDODK_EQ=}jUlowT6wZ7uH#&)M5qBaS|I+w0cq3b8>d0lM(LzPHI6cv=&j)-qSw6wXLfnmA-t^y+%15eh$kl z2ZGQOWI~X8!F{Iny>zN`JvdZM~GBkD~I%C(%>3wn)E z32m_?WNJ&!M)_zru}QFy3Uqw5o36H{I7cUv$(U~-2jO2q?WVzrOi;TC>*=%IWV`m+ zZd!TxXg3W`2!6Jk;L~4~3=RxIwP{zjZ9Tg{Pvw-((fWxgCs!uPbqv?cSAd1HK7gKo z-B9&uOa`K$JR5uEE|7}B0&#Yuo>ReZ`A!C64{QB@ajAg~C@y8OTA_~q5y~`z6U!Nk zDS0CWV$gN5$@;%*yERAsJhFRt<%#)LsEQNy^7fHaN|P|VRM~AgZmLT(C0P~?2k58F z5zN2b|M?OfJ;j0AbxemIn%BP$^DErkOXlkG04+ivrt&h|(yQ;ibwaz9J%7^z(8iu# zoKqMLXn_a%XPxXT6Upa5=D(URk=ZrqYfejVviWQ#V25g{z~k#YHVDB*0oPcukY%!| zx>ke&%{*pYtb*h^L05|UERos_SrOS~(UPS2`j`r%{L@TwBQ#VC_Crm&V#{UGe$S*k zhlKV_1s@ZEV#o%(d}awe1}jR%JQIW~Sov<5pg3=eo{A}i7Y5@Fy$503#2)-jqrTrC zcI_kw$gbV|uxtO$gX~&;osSq>{>{W zUCTHFvTGq$cMk3PtU*(f?2`$?^#(j;Oh2Cp+xaCj%>LlnA-=&&gNA~>vYzb)hYFGh5L*Ffz!yf2Sz6!DP^UrHT{2 z#+nH%xi4~Dt-QmC=Oma@d!TlofE~D7>NReco*n+eyagS_66?fgrC?c~$-D8j&*;yO znZMdHCG;x_0kI}-ssnn~GMy9@EI*wca<2@u0)Gx8TIA{kKmE#&%BUZ<)z)quwJoM! z!zrFm%%hMeVJ|LgL|qw}drc}7p`t7Cujz*{483+8P<5oJ)e%VrO%aKSs7=yEc2`e+tOnHD52=s5 z1@R3Ag;f&Iw>7ko%b;FW$BxeEO@9=n68oC2#^U?TJo(OqU!_xZPg&vumT99i&(c#( zdoqyf^i#k>+jz@TGDdB+4{3of)qXL{uI_$iU}vWJ$cP4wf(r~(J~JZEX_G=M^l5{@ zS;A!9kBkUw?js}W`Cs>J%=R-QTK?>wVI}-8Bhsy2ufUr7X+N1cx3s(3*cYd}nm{IF zq|yb?filVFHehwR#_No)R}-v@cIlk^;KPrM={_T~!b&fppK|dL*@fA8Zqo5Mw#5J~e zChv-3;{}x%95JKy?0$s<>Nv*L57`pqUf<@HHRQslrF4r3)&g9!CJ?qCcTk3Eu=vp) z4A4|t2j(Q#2ZGUYU+zF#61_&MA(R_*U=92kTO!Le)6aT5dOuDbF)0jZnnkhb413U5 z9pkpnxc|zp^v3=qpXC;nyL(m#g}im)MWuEwP{%&}1Ni;Q__884u|3PjLO0d_FFg*z z@xS#zX$EbU9Xc4n5H>%hkRDofwzYX*bvE0)FA`I2E-Cvo^)9t3wg!re;d^h@TAF&G zke8$2gtARJ8=hr{G7E;Z=^3TzITjRVr`goGl)_N)ECxCDF}kPQR8ThiTW|4LC4Bg~ ze^SE^)dw7X9$mEWZ$01|TrMlj(wrzS@bEr@BJF)fAw@Jxy0=>A?3~BQ-3hD9ITc@@g5DwQ+ zWxEkmh92~^-4K-h{?@xxQk)%*N)N9@J6I9L;0x!}M8NW@Y#GM=UZS>lg5KIK6%4fP{pTa~MLti}^MfmV=mx%q zw|hb>f4>|NqCA{C8W)g;>?`EpDOr{44c^T5W5VdHw&F`(`#Io1HhM7q{3yO3N=Fa2 z85eomOb=WMt@!2n`&eC6(%-1>B=}AE8e=45?_aR(m!yFi@Q#YH%tTzpT=p;Ec;1jV29YdVwa^ zXs|D(2J1CAc^pl1103+8aDv%Qdi@GV3GnvN{0l#y90i)4V^?WsW0qQ}<{%%1W?MmX z#9Maqf)=hDgO{MKFbP|n3V@hIgW+p5cx?6_#$%Dex=zvUa2X!1T2`cE!~;9M2D5bu z-dGpnD@cOU<}*B2Za+Q=s6lT_VRri&2N8|W>(8k^cIzxZmt-G)HvbG|gzmj~@w>MW zI#=-+92tagB#7T5hH_!xqZRUC1$tHZoS-{1k5;Zof;1AwHnEnowkp300U~YatC;P< zGb$AWeh99X1klu` zH^CR8JseL}!eOetv;zY|R$~-taJqVA=!!J-i+HA>CY|wI6B{*Yu6BYqUq`AK$Q#l2 z9FgxZBzHj?;qp@Ay_t@ z40d{K(+1GvWz{jvU?eb>Sg^z0N`f7ev3p7A9zi(mB?AV0#_uH~M1KY&g;}!Kfgmj7 zE9Z=+1lmm;*I>plx&mm97P6`CbxjD2QR6D)$D*x_%?|rJG}4Fbb;g#I_tzhV%mGil zpHZ@6@{luGDcj2`7_AWN(Aqs_(;A>d!a$dp1=0p`!&Hoe|IeTqOSBS1#hx*ml8SLo zP%1VbcZ}GzVl$r29#)~TVg-Ze#c?eSm+z9+^m&{H?fwOInKIQ}#=S)$&LEYvINY@6 zR>`)#BAOv4;CHD7`rmxSsyjjp8v61d9L!BN40&~ie?};-!?m#*dl^-Fj6l8Ja@)@| zvcx|>Uc&Y=4i7JoeTnX(Z`XClqIOF=jq4UIV-uwvRrg_YaZrStLl7)Qz@SP2} z{Y>La{PPbDfTS3wvO4ho@fa>T>4df#h%u9%mC)X;cl9368!+R$iDV-BS2%8ugPP37 zt&)$8Jb;$qD;`;}M=QkSc-hV#wct8ALs&e+hG4u=30eY8xNd{AI#;Z>4ZAI>l& zti^bv!E8K&H|C3};HnJGd~c5@dE7RTJhR)+89UmL*Po%2Otq%<=L)G!g*JNm8S;5x z2l+ehDXq4M-=RM%c-GMRJ07qF36l672Qn=rMeFai#$!@_`Q3rQapC#;yGQSawupa6 zD-T19Y)U*!$)<-~mbk2gblmJ7&RjTP1A*Hz2X=Dh(ZvCpaa0q!%RO50Mv#yc^q4t@ zbbo;Z!48^=DqxoO6|4dQi~{2=?s!(G0^=ncIL^0+j|J^6S`CH<41y=EJeAq0x#oI~Bnjr^1gBz8g72 z``FC&_Tg02CO7t>V3;cCPXRY5&@qVihy;ax_#`24JMB^iW`Z2 zT2R|iYjBtrzlg0cH2ufGe9w7zp|Bfcnm`Js&tC=I5J$3 zX5$i!)%$OYfdh`MLr5|hcvz-#kNEx|LP8Os87rNMpAGagp%J)1lJLV(GW_pf@UoEj z;y>JrzgY9)-~Ee!wLd0YTHE!nj{#o*)l3{tFFpPaT}tuZwqM^bzy9O`G#$<#1$d?| z-86W!Wj@aE-_Rk1g~WcE8^*~dF0#tQ^8b2G>2IQcMIHkD1Sz4cW{CZLKJ7#zj)&vo zStjGlR`NT@^dK&(Ge|y*?M%sbFNw1P5FI52g;pMd(7b;zbRh6tqdhr7^HgG0Q0!_U zs#l&|Dz2g_ifql$yR1*{A2`%4ZlK%BLgSq))Qy6AJUK5W<;l@wEaVhf_S=TamOUP4 z0&E)gsiIxNb6W>8Wa_?w5NH*go7jTzVt8J`3Y$+T zn>8*gDEc1!yhoiW;9l13%Z$gE;92d8Y=ll65472%R2_uM>cB_Wsda@91((@Y$Qh0a z3H-F+^&o>Ia{Ki-_|v-OSIA{>K|or6hRhs{Ti2fh_JUQgA?e9Jo8@PmV6S)*^YSzJ zGB|AHpYiR7$x3?1V|8ZEYY;$Et7&iw*VfatFujT?709}X+@m^6lU3%Q!*Ozvcy@+r%hjwuSIk$+T0R_ZgzB^F&(K=H2bb2L zAp|fG*7MIxZ_DN@-e7F_b_)xuS7;7`A165?emrgHMd50rG=kcGr9m3{^@p|a^kkb$ zfhw+R>AN8Iox`>pFkiC%G>plQa0c=rHP!Jv`z5ZQZ08sbJ@j@7bz7;hji#c6PazqPZ$ckpmF!|e zJja#X*%);_))YmYB67zl#~y|DAD8+(xI&(1*M}2)>{?IGX>hO^@@iE&K_^)BTK)~U{mkn>>E|CBfcrg+H7g(N50MBS z`%b^F?@VQ}cz6r+YT}){CVY!wVJ$8c4tAVad92p$6DvD*pIA9ApF5(U4X^#o%XR7J z9~uBLX$fdx0^UC!!^LKOkPqNK3DUC?+ItNvZgE&SjZVXJEnJs7Hq|9ATutr0B(MF< z^+-Se&;V!$6YdLH1t0>2kPMIZS$>ZZ66quq;5m~Jm?iOhHPCvEnp-)cnXyL$M!&y* z{Lc2G7Y#W2W-Q6Ac(doYhBiP})#>3GmvXG8pqA^Zc)!9iD96cn4@iqqc{ z8XAgCP^!4taVu=m-Vn5CFuW2bPa0fG!BZv_-42If@w}kDG$aJY7O%avgXjS2eJ~+z z094f4eZU>DEZc*3ZZ17&4q`_=I zf;aYqFFBQQ&C{HpHVfee7}sZ$$hd$trvVK$MM9zejdd#;*}B!6go}u_!uB{S z5?5~Q;p3hlv%>uFg5Hg575CD$7$0L$U~v6V@qXj|!!dNIc&CvfO|ik=X2UY-25;&H zM`>)5!8k2tM9+o>6ek#o+kS>j;Ng_>&#BEhhk8###ksl+$=cCps-5j+B?+P#e!@u~iAO86B3-tA`UjF*= z_otWd|9tc7KVLq*{`Bs{p1i>JXsUwMz zL@6ZY*cr@!&sXR4c6uS{o8ZC{SzlFkb#--h^`iSvKX;pdp8ovXzfSwZ_HB2|ul|1b z{&BqJw>M93uhY%*$L8th&2+cl?v|hb@xFii&uMeKdEMS0r~T{AetLh~AH%P&$LUAV zAZ~9y4*Q$K)7^f$0r~ae%l-Cnq>nc*cl7hy-C?@9+aI@^m+9-~n`hoWtNLi%yqP5bTU=H>Wf^Ll@XzYA&3E)d^7(6{+#DatPp zeZMEEx$*q5RB|fBQv17y{|3C@=TD`I^TGD~{V*Ld z^Y^#+BNFZ*e<~H656k3=_j^9=HeV4`QTURO-0qH>yO;F4Z2OWxoZ`fcA4&z6gkd!P zqq6;c6n^Yq=wI33si=z20d&93%_>vs>ZTlDGANi{ernu zik}L;I*b1xmlrORmt?^uMB(fFscipzxFK(T>>jo+)8=W~JXc>!Rp(dX;EC_k{^zv2 zuU&CT^nL8M|MfA=Q+V31zm=*kSeE6tyUjDK$e+G6{fdU@AKx%OyW{QECt<9<`YXTscm5fc zyZS?5V)PH+uaj7$L=MiBlbA{i^|_*c5y~?zBozGRvX&Pnp|$o*6|4&Z!c0o5m}^+M zXG|-VIju8Fie&1Lk6L{?&ysr(*`!wvY=v=Bdu5b2i$<5bA%&LKWY=ZLYH3WV!yD#} z`7EsVVs@yzHI`e6E=OL)4OdJpifV9alc?82`nt#TL2IWja$02mH64}P689OurN)+UoKqy% zS)4QEY7_gvz$Qxt7lN*pt(8R|R?2kcv?Nt~vjF}Q;`q`5SkKh;UC{n(u#;tT8W^o#uw8$ z&+RylmCML%yGEWx_`+F&J8H(GC}K`CUoboAlv+S-5%G}gf(Sv6n5;#0KqVFeN7JV( zs~lV-N1BasP760c9TN(}J!scEh>H^Sh-bc_5EMdb+t)0N;TAzKK$F8G%37Dhn+A*J zNtbJlc2>-mBlZ>$6H8kXSb=5%Jr-O^X`m;`VHIcI_C-1RjalUfvJz=f=z&cLXXCxr z1I^w$htBn71(yP_=*tSpykoLPZ5l0_mjh=ABb`vPYcmZ=8mEG3zJtbz^=~><#99CnmBenIv*k8X1HuUM|8`dj6U6&X89!Zjo}4SQ(tUnBVdR zGImIaXOYQ^`J%8cD#nh&Gr?_CSTh9kWp2tMA-K|fjf{-|Qx*X|;>C1j$TG;D&PVfG zzChO8(88a|i}|v!E-A*g4JC()3TuX7zRFEG<*_w7VSbOdXMW2U$jSUjUd&g8bxAQp zh$v^G!kQtNZ*x;f^jKf{i4~0NmV4exb%D6gx)_85JVHJlQOt#DM>_Oc!yOVyLT9zh z5kWxl(OXKrsbkVv5m9HHr~0suawbtdj$v9K;T{BdujB;MbwsV-|@vQ>|D>tm;vWfFmpdjtgSx>=@RO)>kIfpHl zAE7A4xP|lAs7qtRutqm<6z0Ne^k@iUHZt!=u%ME`dogHRz?t|qG8`UJs1M`_j^0gh z$GaR=IhLKyG-OKhFeNa8V04K)kRgHWWNWg)g6Xj!S7c}S9A_07HcE>MzM)GLSO)~F4rGa4CG4rDp)yRh63gt?Fs*~5>d75b}{8cA!3ap8O1tQ;E` z6pd!29Dc?2y>2^73pfxP5jK#f3RTFa-$`0YhZy11lJ?!H0%-X%nnE(>H8-4 zAoDL3mPuuMY2D}6v0qk>7hz|N<_@a_;&eG|Ds7G2zmqMP zEvW)EneEHGMR8F}4G$VS$F>}Ob=YVbu>6co;lQ{9i@p)YjQO0`ECLf7+ltP2Yen+2px zUDSn7zaX7Ph)hSONX5#$ocLM10^w2j?rg+?zLDH+5Y*=%dW5sbih ztNgM)UCtR=MdW)bbR#FWojQi0aZJ#;_X=dCMKwb+u%|deBcAFUH5gb+=e0%11|f@u zelBl@1KV(Tl$c#iK&0ud+`tE*J5fE??-7IB{};v=C0JMNvbw4A-+| z^xr2Z5Ji9ESD*aVUj^M`N_oLG{>)T77nr{{&jnW0FVqpEeY|YHw4FgcX@r9_%VR}K_;iPZiO5FG>vKhpih9l)Eo-30qs2(Q4s?q>t=BHmpBEj` z=-3{o>pZP(Y@@Q2j+$F> zVPs?uR7*9LvK1BOknxx?YpTZ{)?+bVQ#teCRSg*#QF-oaGO89Vvvq?A6VwG>)nq!X z=GgdFWbd_QqUIK0$0obBL`aHZEH;r$el3oUqxZPLM%v6vNSU*vRPA&+hj!f)p%kf- zCO>xlE;A$Um+}Rm)!3QStBoG$1>LfkK8Q??K1sbsRYWOY_!>>J(!&`jO#7&DSl^i# zpcYY1r?*{HU=?6k#0Dtx5(?sh%>w%xi99ioMYi>HR@O(;YlwihGX(8oMx8vGf+7_A zhOX2yw*r?9sAj0-=r($Vnt&QQ)IyN;WgWeIFlK;qlVAgplYmb@~5(?9UF2VcKSor7xzz9Y<#Ljip zZ-fYzQ&yXn+BQz3$mApGbX^_cPEc`8?DSqs7drK+kE zP!ep~7g#1NJGodYNb-``9SgvD$dhAbxG!@DN${8KI(~Rf}BgZ3~lMnmS8oHfQ zBWZfgV%11mFzOb)W9Uj_PGDCchth_ggbdp*UK|CuGrSOY-ky4|L+(`?qs=lmRl+{D zgPj^yJYS*FNC%p;d>~8b`dItS2*$)lU10~hku;#14V7zpuc2$p5={A3(nFBGa_70^ z^dhJ)jTIBy-ch$HD;Pr=sVj|XYdy;N5iAwmkJN5S%Jp0>*Os>fAK}ixQw51^aN;VB z23{CTPlyX{?7U?_vA{aIYv`lsAEzQ{jjA+sDEAE;siv2HNN#cjLlQ%;MzGa}Gf}sl zUsyY5u90^2NLnMC3(6OLIE_t&J7c4fPjz`-oSq1wR$NLxOgr?F znamx?Rw#ubtjVZg>AK%Ebcx;3{C2IPE6R$#h@j08arqhck)Hw~^Vj!_GZ|I)NSl5_I$BP(H-q4X$Fe6PvM;>63cJh&4 zo!MkxVqYzn2g5zQ9R!E`&E#r>PLnHax<|~T4SLHP$Z?0B$k$C5qH<2II9P|bcpaGDilKue7$KnPDdZZC zh9MV96oGOejS@qm^5!F0pt^MQDx(i;eB)x&vDIV28D<^#de0a;^=Jc{;2wd=S8#KT zVMI|}Vtr!+)Ja1XY=vg$YwTL)$CN!`EJRSPhcG!034a7@i?zn75o{6RYbTVjpwmk0 z_`q^FL}N!)!%5oEoYsA>xN>X)yqxm*F4Bw|rvk&4^?^as5ygcR+K}|jmTu}IH&tuP zb0R^vLt@?x_fb0U<8*u1MKNWhnID|>VId`~8A>bR1jX1I77^C;3Ke;EAdSM$dp?Gd z3N5ddM;HY-Z7IYER@`C>Hk3A4UcDZ|Y3L%{89M5mR%Q9X=U24F(3L@u*fE-v=jX)P zVQ3q|vdmX2FujhVExz+ub%)%e?BDVRa(?<5$kzdYy$Wk{%@6;hMnTb$=yji?EtuX& z9@aE{&Mna)e(|OjJ1nvKYm@L$Hy^0?xbum+#waY0EjxUHoL=fi@^t`ExH?6tJ_65+ zn*2gEwuk)#Ruvc9sTty3(a9T+@~-GI#^n~~^j(pZ?e$Cdt_Zn|U;RzQKZ5<`|D(z3 z&v-vsclD2NhvVJrx0mVm>W}o-#9^e3Tb;J3qOzkNS`yxv~@FT}=S_*6vz0I_^j A`Tzg` diff --git a/midterm/report/report.tex b/midterm/report/report.tex index e82e33d0..bd51dad8 100644 --- a/midterm/report/report.tex +++ b/midterm/report/report.tex @@ -7,7 +7,38 @@ \maketitle \section{Progress} We have implemented reading data from csv files, preprocessing them with optional showing of some of the information about the data and used model/learner for implementing neighbour searches \\ -Right now the model predicts random anime choosen from the table +Program is very flexible and allows for a lot of modification from command line arguments \\ +Full list here: +\begin{lstlisting}[language=bash] +options: +-h, --help show this help message and exit +--data_limit DATA_LIMIT, -dl DATA_LIMIT + Specify data limit, Recommended at least 500k, + set to -1 for no limit +--seed SEED, -s SEED Specify seed +--debug DEBUG, -d DEBUG + Use debug (more information) prints +--database DATABASE, -db DATABASE + Specify database path +--metric {cosine,mahalanobis,euclidean} +-m {cosine,mahalanobis,euclidean} + Specify metric for NearestNeighbor learner +--algorithm {auto,ball_tree,kd_tree,brute} +-a {auto,ball_tree,kd_tree,brute} + Specify algorithm for Nearest Neighbor learner +--anime ANIME, -an ANIME + Specify anime to choose +--neighbors NEIGHBORS, -n NEIGHBORS + Specify number of nearest neighbors +--user_threshold USER_THRESHOLD, -ut USER_THRESHOLD + Specify minimal number of votes + required for user to be included in + the data, set to -1 for no threshold +--anime_threshold ANIME_THRESHOLD, -at ANIME_THRESHOLD + Specify minimal number of votes + required for anime to be included + in the data, set to -1 for no threshold +\end{lstlisting} \section{Results} \subsection{Presentation} \subsubsection{Plots} @@ -29,5 +60,7 @@ All of functionality that we want to implement is available in sklearn and scipy \subsection{Results and findings} \section{Finishing project} +\subsection{Embedding more data in user and anime} +Currently we are only embedding pure rating values of users, we do not take into consideration, popularity, "controversy", studio which created the anime, length of anime (number of episodes and length of episodes), and when it was aired \\ \end{document} \ No newline at end of file diff --git a/midterm/report/report.xdv b/midterm/report/report.xdv index 93e0ac1341e8981a3c17271904d153f3659cfc7f..7e1693a10fa47bbb975e88fa7f73293a196bb6f5 100644 GIT binary patch literal 44220 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