ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙ  jldZddlZddlZddlmZddlmZmZmZm Z ddl Z ddl Z ddlmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZGddeZGd d ZGd d eZ y) zHeatWave ML model utilities for MySQL Connector/Python. Provides classes to manage training, prediction, scoring, and explanations via MySQL HeatWave stored procedures. N)Enum)AnyDictOptionalUnion) VAR_NAME_SPACEatomic_transaction convert_to_df execute_sqlformat_value_sqlget_random_name source_schemasql_response_to_dfsql_table_from_dfsql_table_to_df table_existstemporary_sql_tables validate_name)MySQLConnectionAbstractcPeZdZdZdZdZdZdZdZdZ dZ e d e e dfd e fd Zy ) ML_TASKz/Enumeration of supported ML tasks for HeatWave.classification regression forecastinganomaly_detectionlog_anomaly_detectionrecommendationtopic_modelingtaskreturnc>t|tr|S|jS)a' Return the string representation of a machine learning task. Args: task (Union[str, ML_TASK]): The task to convert. Accepts either a task enum member (ML_TASK) or a string. Returns: str: The string value of the ML task. ) isinstancestrvalue)rs B/opt/nydus/tmp/pip-target-mjwu0ny1/lib/python/mysql/ai/ml/model.pyget_task_stringzML_TASK.get_task_stringGs dC KzzN)__name__ __module__ __qualname____doc__CLASSIFICATION REGRESSION FORECASTINGANOMALY_DETECTIONLOG_ANOMALY_DETECTIONRECOMMENDATIONTOPIC_MODELING staticmethodrr#r&r'r%rr<sS9%NJK+3%N%NeCN3r'rc HeZdZdZej dfdedeeefde efdZ de fdZ dede e fd Zde e fd Zdede fd Zdd Zdefd Zde fdZdede ede e ddfdZdedede e ddfdZdededede e def dZdedede e dej2fdZy)_MyModelCommona8 Common utilities and workflow for MySQL HeatWave ML models. This class handles model lifecycle steps such as loading, fitting, scoring, making predictions, and explaining models or predictions. Not intended for direct instantiation, but as a superclass for heatwave model wrappers. Attributes: db_connection: MySQL connector database connection. task: ML task, e.g., "classification" or "regression". model_name: Identifier of model in MySQL. schema_name: Database schema used for operations and temp tables. N db_connectionr model_namec||_tj||_t ||_t |j5}t|dddd|t|j}td||_ |jd|_ ||_ t|t |j5}t|d|jd|fdddy#1swYxYw#1swYyxYw)a Instantiate _MyMLModelCommon. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-train.html A full list of supported tasks can be found under "Common ML_TRAIN Options" Args: db_connection: MySQL database connection. task: ML task type (default: "classification"). model_name: Name to register the model within MySQL (default: None). Raises: ValueError: If the schema name is not valid DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. Returns: None z(CALL sys.ML_CREATE_OR_UPGRADE_CATALOG();N.z.scorezSET @z = %s;params)r7rr&rr schema_namer r r _is_model_name_availabler model_varmodel_var_scorer8r)selfr7rr8cursors r%__init__z_MyModelCommon.__init__is6+++D1 (7  2 2 3v  J K4  ()F)FGJ*+1ZL9"&..!18$j!  2 2 3v %'7v > } U4 34 34 3s C%>C1%C.1C:r c|j}d|d}d|d|j}t|j5}t |||j dkDcdddS#1swYyxYw)a% Deletes the model from the model catalog if present Raises: DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. Returns: Whether the model was deleted ML_SCHEMA_.MODEL_CATALOGz DELETE FROM  WHERE model_handle = @rN) _get_userr?r r7r rowcount)rA current_userqualified_model_catalog delete_modelrBs r% _delete_modelz_MyModelCommon._delete_modelsu~~' $.|nN"K234%%)^^$4 6    2 2 3v  -??Q&4 3 3s A##A,c dtdtfd}|j}d|d}d|d}t|j5}t |||ft |}|j rd }nS|jd } tj| d } | jD cic]\} } | || }} } |cd d d Scc} } w#1swYy xYw) a Retrieves the model info from the model_catalog Args: model_var: The model alias to retrieve Returns: The model info from the model_catalog (None if the model is not present in the catalog) Raises: DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. elemr ct|tr tj|}|S|S#tj$rY|SwxYwN)r"r#jsonloadsJSONDecodeError)rOs r% process_colz3_MyModelCommon._get_model_info..process_colsI$$::d+DK4K++Ks+AArErFSELECT * FROM z WHERE model_handle = %sr;Nrecords)orientr) rrHr r7r remptyto_jsonrRrSitems) rAr8rUrJrK model_existsrB model_info_dfresultunprocessed_resultunprocessed_result_jsonkeyrOs r%_get_model_infoz_MyModelCommon._get_model_infos  c c ~~' $.|nN"K455M N   2 2 3v  j] C.v6M""%2%:%:)%:%L"*.**5G*H*K'&=%B%B%D%D TT**%D 4 34 3sA'C)C <C CCc8|j|jS)a Checks if the model name is available. Model info is present in the catalog only if the model was previously fitted. Returns: True if the model name is not part of the model catalog Raises: DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. )rbr8)rAs r%get_model_infoz_MyModelCommon.get_model_infos##DOO44r'c(|j|duS)a1 Checks if the model name is available Returns: True if the model name is not part of the model catalog Raises: DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. N)rb)rAr8s r%r>z'_MyModelCommon._is_model_name_availables##J/477r'ct|j5}d|jd}t||dddy#1swYyxYw)a Loads the model specified by `self.model_name` into MySQL. After loading, the model is ready to handle ML operations. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-model-load.html Raises: DatabaseError: If the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. Returns: None zCALL sys.ML_MODEL_LOAD(@z, NULL);N)r r7r?r )rArBload_model_querys r% _load_modelz_MyModelCommon._load_models?"  2 2 3v!9$..9IR   0 14 3 3s <Act|j5}|jd|jdj dd}t |cdddS#1swYyxYw)a Fetch the current database user (without host). Returns: The username string associated with the connection. Raises: DatabaseError: If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the user name includes unsupported characters zSELECT CURRENT_USER()r@N)r r7executefetchonesplitr)rArBrJs r%rHz_MyModelCommon._get_usersV  2 2 3v NN2 3!??,Q/55c:1=L . 4 3 3s AA!!A*c|jt|j5}|j}d|d}d|d|j}t ||t |}|jdcdddS#1swYyxYw)a Get model explanations, such as detailed feature importances. Returns: dict: Feature importances and model explainability data. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-model-explanations.html Raises: DatabaseError: If the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the model does not exist in the model catalog. Should only occur if model was not fitted or was deleted. rErFzSELECT model_explanation FROM rGrrN)rhr r7rHr?r riloc)rArBrJrK explain_querydfs r% explain_modelz_MyModelCommon.explain_model#s&   2 2 3v>>+L(2<.&O #01H0IJ))-(8:   .#F+B774=4 3 3s AA>>B table_nametarget_column_nameoptionsct||t|d|d}nd}|i}tj|}|j|d<|j t |j 5}t|\}}t|d|jd|d|d|d |jd | dddy#1swYyxYw) a2 Fit an ML model using a referenced SQL table and target column. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-train.html A full list of supported options can be found under "Common ML_TRAIN Options" Args: table_name: Name of the training data table. target_column_name: Name of the target/label column. options: Additional fit/config options (may override defaults). Raises: DatabaseError: If provided options are invalid or unsupported. If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the table or target_column name is not valid Returns: None N'NULLrzCALL sys.ML_TRAIN('r:', , z, @)r;) rcopydeepcopyrrMr r7r r r=r?)rArtrurvtarget_col_stringrB placeholders parameterss r%_fitz_MyModelCommon._fitEs8 j!  ) , -"#$6#7q 9  &  ?G--())   2 2 3v'7'@ $L* (():,c()#n%' " 4 3 3s /AB99Coutput_table_namec>t|t||jt|j5}t |\}}t |d|j d|d|jd|j d|d|d |dddy#1swYyxYw) a Predict on a given data table and write results to an output table. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-predict-table.html A full list of supported options can be found under "ML_PREDICT_TABLE Options" Args: table_name: Name of the SQL table with input data. output_table_name: Name for the SQL output table to contain predictions. options: Optional prediction options. Returns: None Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the table or output_table name is not valid zCALL sys.ML_PREDICT_TABLE('r:', @, 'rzr|r;N)rrhr r7r r r=r?)rArtrrvrBrrs r%_predictz_MyModelCommon._predict~s6 j!'(   2 2 3v'7'@ $L* (():,7'((()+<*=S#n " 4 3 3s ABBmetricct|t|t||jt|j5}t |\}}t |d|j d|d|d|jd|jd|d |g|t |d |jt|}|jd cd d d S#1swYy xYw) aI Evaluate model performance with a scoring metric. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-score.html A full list of supported options can be found under "Options for Recommendation Models" and "Options for Anomaly Detection Models" Args: table_name: Table with features and ground truth. target_column_name: Column of true target labels. metric: String name of the metric to compute. options: Optional dictionary of further scoring options. Returns: float: Computed score from the ML system. Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the table or target_column name or metric is not valid zCALL sys.ML_SCORE('r:z', 'rz, %s, @r{r|r;zSELECT @roN) rrhr r7r r r=r?r@rrp) rArtrurrvrBrrrrs r%_scorez_MyModelCommon._scoresD j!()f   2 2 3v'7'@ $L* (():,7*+,'(,,-R#n,,  (4+?+?*@ A B#F+B774='4 3 3s BCCct|t||ddi}|jt|j5}t |\}}t |d|j d|d|jd|j d|d|d | t |d |j d|t|}|cdddS#1swYyxYw) a Produce explanations for model predictions on provided data. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-explain-table.html A full list of supported options can be found under "ML_EXPLAIN_TABLE Options" Args: table_name: Name of the SQL table with input data. output_table_name: Name for the SQL table to store explanations. options: Optional dictionary (default: {"prediction_explainer": "permutation_importance"}). Returns: DataFrame: Prediction explanations from the output SQL table. Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. ValueError: If the table or output_table name is not valid Nprediction_explainerpermutation_importancezCALL sys.ML_EXPLAIN_TABLE('r:rrrzr|r;rV) rrhr r7r r r=r?r)rArtrrvrBrrrrs r%_explain_predictionsz#_MyModelCommon._explain_predictionss8 j!'( ?-/GHG   2 2 3v'7'@ $L* (():,7'((()+<*=S#n "  .1A1A0B!DUCV W X#F+B#4 3 3s A6CC )r N)r(r)r*r+rr,rrr#rrCboolrMdictrbrdr>rhrHrsrrfloatrpd DataFramerr4r'r%r6r6Zsr "%,$:$:$( ,V.,VCL!,VSM ,V\'t'0-#-(4.-^ 5 5 83 84 82*/3/& !t !D77%SM7$ 7  7r,,25,@H, ,\:!:! :! :! $ :!  :!x55255@H5 5r'r6c eZdZdZ d deej ejfde eej ejfde e ddfdZ d deej ejfde e dej fdZ d deej ejfdeej ejfd e de e def d Z d deej ejfdedej fd Zy) MyModelz Convenience class for managing the ML workflow using pandas DataFrames. Methods convert in-memory DataFrames into temp SQL tables before delegating to the _MyMLModelCommon routines, and automatically clean up temp resources. NXyrvr cVtt|c}t|j5}t|j5}|mt |t j r|jd}ntfd}|jvrtd|dj}|||<|}nd}}t||j|\} } |j|j| f|j| ||ddddddy#1swYxYw#1swYyxYw)a Fit a model using DataFrame inputs. If an 'id' column is defined in either dataframe, it will be used as the primary key. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-train.html A full list of supported options can be found under "Common ML_TRAIN Options" Args: X: Features DataFrame. y: (Optional) Target labels DataFrame or Series. If None, only X is used. options: Additional options to pass to training. Returns: None Raises: DatabaseError: If provided options are invalid or unsupported. If a database connection issue occurs. If an operational error occurs during execution. Notes: Combines X and y as necessary. Creates a temporary table in the schema for training, and deletes it afterward. Nrc |jvSrQcolumnsnamers r%zMyModel.fit..UsT%:r'zTarget column y with name z' already present in feature dataframe X)r r r7rr"rrrr ValueErrorr}rr=appendr) rArrrvrBtemporary_tablesru df_combinedfinal_df_rts ` r%fitz MyModel.fit(s#BQq!11 t11 2f !3!3 48H}a.)*1&)8:*&&2$45G4HI11  ffh 23 ./&%)"-fd6F6FQMAz  # #T%5%5z$B C IIj"4g >7 5 3 2 4 4 3 2s$DB>DDD DD(cDt|}tj5tj5}t j |\}}|j j |ftfd}|j j |fj|||tj |}|djtj|d<|cdddcdddS#1swYnxYw dddy#1swYyxYw)a Generate model predictions using DataFrame input. If an 'id' column is defined in either dataframe, it will be used as the primary key. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-predict-table.html A full list of supported options can be found under "ML_PREDICT_TABLE Options" Args: X: DataFrame containing prediction features (no labels). options: Additional prediction settings. Returns: DataFrame with prediction results as returned by HeatWave. Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. Notes: Temporary SQL tables are created and deleted for input/output. c4tj| SrQrr=rtrBrAs r%rz!MyModel.predict..|D,,j($r' ml_resultsN) r r r7rrr=rr rrmaprRrS) rArrvrrrtr predictionsrBs ` @r%predictzMyModel.predictjs@ !  t11 2f !3!3 48H-fd6F6FJMAz  # #T%5%5z$B C /!   # #T%5%57H$I J MM*&7 A)&$2B2BDUVK)4L(A(E(Edjj(QK %% 5 4 3 2 4 4 4 3 2 2s#DB4D- DD DDrctt|c}t|j5}t|j5}t fd}j }|||<|} t ||j| \} } |j|j| f|j| |||} | cdddcdddS#1swYnxYw dddy#1swYyxYw)a Score the model using X/y data and a selected metric. If an 'id' column is defined in either dataframe, it will be used as the primary key. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-score.html A full list of supported options can be found under "Options for Recommendation Models" and "Options for Anomaly Detection Models" Args: X: DataFrame of features. y: DataFrame or Series of labels. metric: Metric name (e.g., "balanced_accuracy"). options: Optional ml scoring options. Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. Returns: float: Computed score. c |jvSrQrrs r%rzMyModel.score..sd!))>Sr'N) r r r7rr r}rr=rr) rArrrrvrBrrurrrrtscores ` r%rz MyModel.scoresFQq!11 t11 2f !3!3 48H!01S!T &&(K./K* +"H-fd6F6FQMAz  # #T%5%5z$B CKK ,>PE 5 4 3 2 4 4 4 3 2 2s$CA2C 6 C C CC(ct|}tj5tj5}t j |\}}|j j |ftfd}|j j |fj|||}|cdddcdddS#1swYnxYw dddy#1swYyxYw)a  Explain model predictions using provided data. If an 'id' column is defined in either dataframe, it will be used as the primary key. References: https://dev.mysql.com/doc/heatwave/en/mys-hwaml-ml-explain-table.html A full list of supported options can be found under "ML_EXPLAIN_TABLE Options" Args: X: DataFrame for which predictions should be explained. options: Optional dictionary of explainability options. Returns: DataFrame containing explanation details (feature attributions, etc.) Raises: DatabaseError: If provided options are invalid or unsupported, or if the model is not initialized, i.e., fit or import has not been called If a database connection issue occurs. If an operational error occurs during execution. Notes: Temporary input/output tables are cleaned up after explanation. c4tj| SrQrrs r%rz-MyModel.explain_predictions..rr'N) r r r7rrr=rr r) rArrvrrrtr explanationsrBs ` @r%explain_predictionszMyModel.explain_predictionss@ !  t11 2f !3!3 48H.fd6F6FJMAz  # #T%5%5z$B C /!   # #T%5%57H$I J44-wL # 5 4 3 2 4 4 4 3 2 2s#CA8C1 CC CC#rQ)r(r)r*r+rrrnpndarrayrrrrr#rrrrr4r'r%rr sJ#' @? rzz) *@? E",, 23 4@?$ @?  @?J#'6 rzz) *6$6  6z#' 3 rzz) *3 rzz) *3 3 $ 3  3p5 rzz) *5 5   5 r'r)!r+r}rRenumrtypingrrrrnumpyrpandasrmysql.ai.utilsrr r r r r rrrrrrrmysql.connector.abstractsrrr6rr4r'r%rsa8  -->d