{"id":39546,"date":"2019-10-31T22:35:27","date_gmt":"2019-10-31T19:35:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\/"},"modified":"2019-10-31T22:35:27","modified_gmt":"2019-10-31T19:35:27","slug":"kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","title":{"rendered":"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Este important pentru noi s\u0103 \u00een\u021belegem ce se \u00eent\u00e2mpl\u0103 cu studen\u021bii no\u0219tri pe parcursul \u00eenv\u0103\u021b\u0103rii \u0219i cum aceste evenimente influen\u021beaz\u0103 rezultatul, a\u0219a c\u0103 construim o Hart\u0103 a C\u0103l\u0103toriei Clientului \u2014 o hart\u0103 a experien\u021bei clientului. Procesul de \u00eenv\u0103\u021bare nu este un lucru continuu \u0219i unitar, ci o succesiune de evenimente \u0219i ac\u021biuni interconectate ale studentului, iar aceste ac\u021biuni pot diferi semnificativ \u00eentre diferi\u021bi elevi. Iat\u0103, a absolvit o lec\u021bie: ce va face \u00een continuare? Va merge la tema pentru acas\u0103? Va lansa aplica\u021bia mobil\u0103? Va schimba cursul, va cere s\u0103 schimbe profesorul? Va intra imediat \u00een lec\u021bia urm\u0103toare? Sau va pleca pur \u0219i simplu dezam\u0103git? Este posibil s\u0103 identific\u0103m, analiz\u00e2nd aceast\u0103 hart\u0103, tipare care conduc la finalizarea cu succes a cursului sau, dimpotriv\u0103, la \u201eabandonarea\u201d studentului?<\/p>\n<p><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/3eaee2e858273669b4490f6ceb65d281.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe obicei, pentru a construi CJM se folosesc instrumente specializate, foarte scumpe, cu cod \u00eenchis. Dar ne-am dorit s\u0103 venim cu ceva simplu, care necesit\u0103 eforturi minime \u0219i, pe c\u00e2t posibil, s\u0103 fie open source. A\u0219a a ap\u0103rut ideea de a folosi lan\u021burile Markov \u2014 \u0219i am reu\u0219it. Am construit o hart\u0103, am interpretat datele despre comportamentul studen\u021bilor sub forma unei grafice, am descoperit r\u0103spunsuri complet neobi\u0219nuite la \u00eentreb\u0103rile majore de afaceri \u0219i am g\u0103sit chiar bug-uri bine ascunse. Am realizat toate acestea cu ajutorul solu\u021biilor open source dintr-un script Python. \u00cen acest articol, voi vorbi despre dou\u0103 cazuri cu acele rezultate neobi\u0219nuite \u0219i voi \u00eemp\u0103rt\u0103\u0219i scriptul cu to\u021bi cei interesa\u021bi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA\u0219adar, lan\u021burile Markov arat\u0103 probabilitatea tranzi\u021biilor \u00eentre evenimente. Iat\u0103 un exemplu primitiv din Wikipedia:<\/p>\n<p><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/978e18169ba4c7b2b71787536e4bb219.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAici, \u201eE\u201d \u0219i \u201eA\u201d sunt evenimente, iar s\u0103ge\u021bile indic\u0103 tranzi\u021biile \u00eentre ele (inclusiv tranzi\u021bia dintr-un eveniment \u00een el \u00eensu\u0219i), iar greut\u0103\u021bile s\u0103ge\u021bilor reprezint\u0103 probabilitatea tranzi\u021biei (\u201egrafic orientat ponderat\u201d).<\/p>\n<h2>Ce am folosit<\/h2>\n<p>\nLan\u021bul a fost antrenat cu func\u021bionalitatea standard a Python, care a primit jurnalele de activitate ale studen\u021bilor. Graficul pe matricea ob\u021binut\u0103 a fost construit cu biblioteca NetworkX.<\/p>\n<p>Jurnalul arat\u0103 astfel:<\/p>\n<p><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/bc75077802cd7eeb00ebe4a56bc61050.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste un fi\u0219ier csv, care con\u021bine un tabel cu trei coloane: id-ul studentului, numele evenimentului \u0219i timpul c\u00e2nd a avut loc. Aceste trei c\u00e2mpuri sunt suficiente pentru a urm\u0103ri mi\u0219c\u0103rile clientului, a construi harta \u0219i, \u00een cele din urm\u0103, a ob\u021bine un lan\u021b Markov.<\/p>\n<p>Biblioteca returneaz\u0103 grafurile construite \u00een format .dot sau .gexf. Pentru vizualizarea primelor, se poate folosi pachetul gratuit Graphviz (instrumentul gvedit); noi am lucrat cu .gexf \u0219i Gephi, de asemenea gratuit.<\/p>\n<p>Mai departe vreau s\u0103 prezint dou\u0103 exemple de utilizare a lan\u021burilor Markov, care ne-au permis s\u0103 privim dintr-o nou\u0103 perspectiv\u0103 asupra obiectivelor noastre, proceselor de \u00eenv\u0103\u021bare \u0219i a ecosistemului Skyeng. De asemenea, am corectat unele erori.<\/p>\n<h2>Primul caz: aplica\u021bia mobil\u0103<\/h2>\n<p>\nLa \u00eenceput, am studiat parcursul studentului prin cel mai popular produs al nostru \u2014 cursul General. \u00cen acel moment, lucram \u00een departamentul pentru copii Skyeng \u0219i voiam s\u0103 vedem c\u00e2t de eficient este mobilul nostru aplica\u021bie cu publicul nostru t\u00e2n\u0103r.<\/p>\n<p>Dup\u0103 ce am luat fi\u0219ierele de log \u0219i le-am procesat printr-un script, am ob\u021binut ceva de genul:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ws\/ru\/de\/wsrudeufw3pzwrrxtxtn1pjeqvu.png\"><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/f2533ddfae7d5f85d0e86902b9b7005f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Nodul de start \u2014 Start General, iar \u00een jos sunt trei noduri finale: studentul \u201ea adormit\u201d, a schimbat cursul, a terminat cursul.<\/p>\n<ul>\n<li>A adormit, \u201eZasnul\u201d \u2014 \u00eenseamn\u0103 c\u0103 nu mai urmeaz\u0103 lec\u021bii, cel mai probabil s-a retras. Noi numim optimist acest stadiu \u201ea adormit\u201d deoarece, \u00een teorie, el are \u00een continuare posibilitatea de a continua studiile. Cel mai r\u0103u rezultat pentru noi.<\/li>\n<li>A schimbat cursul, a trecut de la General la altceva \u0219i s-a pierdut pentru lan\u021bul nostru Markov.<\/li>\n<li>A terminat cursul \u2014 un stadiu ideal, persoana a parcurs 80% din lec\u021bii (nu toate lec\u021biile sunt obligatorii).<\/li>\n<\/ul>\n<p>\nIntrarea \u00een nodul lec\u021bie reu\u0219it\u0103 semnific\u0103 finalizarea cu succes a lec\u021biei pe platforma noastr\u0103 \u00eempreun\u0103 cu profesorul. Aceasta fixeaz\u0103 progresul pe curs \u0219i apropierea de rezultatul dorit \u2014 \u201eA terminat cursul\u201d. Este important pentru noi ca studen\u021bii s\u0103 o viziteze c\u00e2t mai mult.<\/p>\n<p>Pentru a ob\u021bine concluzii cantitative mai precise pentru aplica\u021bia mobil\u0103 (nodul sesiune app), am construit lan\u021buri separate pentru fiecare din nodurile finale \u0219i apoi am comparat perechea greut\u0103\u021bile muchiilor:<\/p>\n<ul>\n<li>din sesiunea app \u00eenapoi \u00een ea \u00eensu\u0219i;<\/li>\n<li>din sesiunea app \u00een lec\u021bie reu\u0219it\u0103;<\/li>\n<li>din lec\u021bie reu\u0219it\u0103 \u00een sesiunea app.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/iw\/mz\/yq\/iwmzyqmlmbkgzmjqa7qhxwd7shq.png\"><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/fc68ca73b379f57a38b53f0c31e75cb1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>La st\u00e2nga \u2014 studen\u021bi care au terminat cursul, la dreapta \u2014 \u201ea adormit\u201d<\/i><\/p>\n<p>Aceste trei muchii arat\u0103 leg\u0103tura dintre succesul studentului \u0219i utilizarea aplica\u021biei mobile. Ne a\u0219teptam s\u0103 vedem c\u0103 studen\u021bii care au terminat cursul au o leg\u0103tur\u0103 mai puternic\u0103 cu aplica\u021bia dec\u00e2t \u201eaduce-l la somn\u201d. Cu toate acestea, \u00een realitate, am ob\u021binut rezultate exact opuse:<\/p>\n<ul>\n<li>ne-am convins c\u0103 diferitele grupuri de utilizatori interac\u021bioneaz\u0103 diferit cu aplica\u021bia mobil\u0103;<\/li>\n<li>studen\u021bii de succes folosesc aplica\u021bia mobil\u0103 mai pu\u021bin intensiv;<\/li>\n<li>studen\u021bii care adorm folosesc mai activ aplica\u021bia mobil\u0103.<\/li>\n<\/ul>\n<p>\nAceasta \u00eenseamn\u0103 c\u0103 studen\u021bii \u00abcare adorm\u00bb \u00eencep s\u0103 petreac\u0103 din ce \u00een ce mai mult timp \u00een aplica\u021bia mobil\u0103 \u0219i, \u00een cele din urm\u0103, r\u0103m\u00e2n \u00een ea pentru totdeauna.<\/p>\n<p><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/45c17a908e2178edd99e340f34657cad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa \u00eenceput am fost surprin\u0219i, dar, dup\u0103 ce ne-am g\u00e2ndit, am realizat c\u0103 este un efect destul de firesc. C\u00e2ndva, am \u00eenv\u0103\u021bat singur franceza folosind dou\u0103 instrumente: aplica\u021bia mobil\u0103 \u0219i lec\u021biile de gramatic\u0103 de pe YouTube. La \u00eenceput, \u00eemi \u00eemp\u0103r\u021beam timpul \u00eentre ele \u00een propor\u021bie de 50 la 50. Dar aplica\u021bia era mai distractiv\u0103, exista gamificare, totul era simplu, rapid \u0219i clar, \u00een timp ce lec\u021biile necesitau implicare, notarea unor lucruri \u0219i practic\u0103 \u00een caiet. Treptat, am \u00eenceput s\u0103 petrec mai mult timp pe smartphone, p\u00e2n\u0103 c\u00e2nd ponderea acestuia a ajuns la 100%: dac\u0103 r\u0103m\u00e2i \u00een el timp de trei ore, se creeaz\u0103 o iluzie fals\u0103 a muncii realizate, din cauza c\u0103reia nu mai exist\u0103 dorin\u021ba de a pleca \u0219i de a asculta ceva.<\/p>\n<p>Dar cum a\u0219a? Noi am creat special aplica\u021bia mobil\u0103, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/312126\/\">am integrat \u00een ea curba lui Ebbinghaus,<\/a><\/noindex>am gamificat-o, am f\u0103cut-o atr\u0103g\u0103toare, pentru ca oamenii s\u0103 petreac\u0103 timp \u00een ea, iar se pare c\u0103 ea doar \u00eei distrage? De fapt, cauza este c\u0103 echipa aplica\u021biei mobile a f\u0103cut prea bine treaba, rezult\u00e2nd \u00eentr-un produs grozav, auto-suficient, care a \u00eenceput s\u0103 ias\u0103 din ecosistemul nostru.<\/p>\n<p>\u00cen urma cercet\u0103rii, s-a ajuns la \u00een\u021belegerea c\u0103 aplica\u021bia mobil\u0103 trebuie s\u0103 fie schimbat\u0103 pentru a distrage mai pu\u021bin de la cursul principal de \u00eenv\u0103\u021bare. \u0218i pentru copii, \u0219i pentru adul\u021bi. Acum, aceast\u0103 munc\u0103 este \u00een desf\u0103\u0219urare.<\/p>\n<h2>Al doilea caz: bug-uri \u00een procesul de onboarding.<\/h2>\n<p>\n\u00cendrumarea este o procedur\u0103 op\u021bional\u0103 suplimentar\u0103 la \u00eenregistrarea unui nou student, care elimin\u0103 poten\u021bialele probleme tehnice \u00een viitor. Scenariul de baz\u0103 presupune c\u0103 persoana s-a \u00eenregistrat pe pagina de destina\u021bie, a ob\u021binut acces la contul personal, este contactat\u0103 \u0219i particip\u0103 la o lec\u021bie introductiv\u0103. \u00cen acest context, observ\u0103m un procent mare de dificult\u0103\u021bi tehnice \u00een timpul lec\u021biei introductive: versiunea gre\u0219it\u0103 a browser-ului, microfonul sau sonorul care nu func\u021bioneaz\u0103, iar profesorul nu poate oferi imediat o solu\u021bie, iar toate acestea sunt cu at\u00e2t mai complicate c\u00e2nd este vorba despre copii. De aceea, am dezvoltat o aplica\u021bie suplimentar\u0103 \u00een contul personal, unde pot fi efectua\u021bi patru pa\u0219i simpli: verificarea browser-ului, camerei, microfonului \u0219i confirmarea c\u0103 p\u0103rin\u021bii vor fi l\u00e2ng\u0103 copii \u00een timpul lec\u021biei introductive (deoarece ei sunt cei care pl\u0103tesc pentru educa\u021bia copiilor).<\/p>\n<p>Aceste c\u00e2teva pagini de \u00eendrumare au demonstrat un astfel de funnel:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/l5\/pt\/aj\/l5ptajlgx6msydvswctke1w505w.jpeg\"><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/5e949640d4d4f8a70dc4fd677e3c93a7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>1: un bloc de start cu trei formulare de login-parola u\u0219or diferite (\u00een func\u021bie de client).<br \/>\n2: o bif\u0103 de consim\u021b\u0103m\u00e2nt pentru procedura suplimentar\u0103 de \u00eendrumare.<br \/>\n2.1-2.3: verificarea prezen\u021bei p\u0103rintelui, versiunea Chrome \u0219i sunetul.<br \/>\n3: blocul final.<\/i><\/p>\n<p>Arat\u0103 foarte natural: \u00een primele dou\u0103 etape, cea mai mare parte a vizitatorilor se pierde, realiz\u00e2nd c\u0103 trebuie s\u0103 completeze ceva, s\u0103 verifice, iar timpul este limitat. Dac\u0103 clientul a ajuns la pasul trei, atunci este aproape sigur c\u0103 va ajunge la final. \u00cen funnel nu se observ\u0103 niciun motiv pentru a suspecta ceva.<\/p>\n<p>Cu toate acestea, am decis s\u0103 analiz\u0103m \u00eendrumarea noastr\u0103 nu pe un funnel clasic unidimensional, ci printr-un model Markov. Am inclus pu\u021bin mai multe evenimente, am rulat scriptul \u0219i am ob\u021binut urm\u0103torul rezultat:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/pi\/e6\/9p\/pie69p-4rmwaqdqqunigm3oz8am.png\"><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/44c094cb0be013beac00c0af5a3801be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Din acest haos se poate \u00een\u021belege un singur lucru: ceva nu a mers bine. Procesul de \u00eendrumare este liniar, acest lucru este \u00eencorporat \u00een design, nu ar trebui s\u0103 existe o astfel de re\u021bea de leg\u0103turi. Dar aici este clar c\u0103 utilizatorul este aruncat \u00eentre pa\u0219i, \u00eentre care nu ar trebui s\u0103 existe tranzi\u021bii.<\/p>\n<p><img decoding=\"async\" alt=\"Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bug-urilor. Cu un script \u00een Python\" src=\"\/wp-content\/uploads\/2019\/10\/f43fcabaa7b773c17741b4eaa927b600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCauzele acestei imagini ciudate pot fi dou\u0103:<\/p>\n<ul>\n<li>erori au fost introduse \u00een baza de loguri;<\/li>\n<li>erorile sunt prezente \u00een produsul \u00een sine \u2013 \u00eendrumare.<\/li>\n<\/ul>\n<p>\nPrimul motiv, cel mai probabil, este valid, dar verificarea acestuia este destul de complicat\u0103, iar corectarea logurilor nu va ajuta la \u00eembun\u0103t\u0103\u021birea experien\u021bei utilizatorului. \u00cen ceea ce prive\u0219te al doilea motiv, dac\u0103 acesta exist\u0103, trebuia s\u0103 se ac\u021bioneze rapid. A\u0219adar, ne-am \u00eendreptat spre examinarea nodurilor, identificarea muchiilor care nu ar trebui s\u0103 existe \u0219i c\u0103utarea cauzelor apari\u021biei acestora. Am observat c\u0103 unii utilizatori se blocau \u0219i circulau \u00een cerc, al\u021bii erau arunca\u021bi din mijloc \u00een \u00eenceput, iar al\u021bii pur \u0219i simplu nu puteau sc\u0103pa din primele dou\u0103 pa\u0219i. Am transmis datele c\u0103tre QA \u2014 \u0219i da, s-a dovedit c\u0103 onboarding-ul avea suficient de multe buguri: acesta era un produs secundar, pu\u021bin improvizat, care nu a fost testat suficient de bine, deoarece nu se a\u0219teptau probleme. Acum \u00eentregul proces de \u00eenregistrare s-a schimbat.<\/p>\n<p>Aceast\u0103 poveste ne-a ar\u0103tat o aplicare nea\u0219teptat\u0103 a lan\u021burilor Markov \u00een domeniul QA.<\/p>\n<h3>\u00cencerca\u021bi \u0219i voi!<\/h3>\n<p>\nAm postat scriptul meu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/BartolomeuD\/markov-chain\">Python pentru \u00eenv\u0103\u021barea lan\u021burilor Markov<\/a><\/noindex> \u00een acces deschis \u2014 folosi\u021bi-l cu pl\u0103cere. Documenta\u021bia este pe GitHub, \u00eentreb\u0103rile pot fi adresate aici, voi \u00eencerca s\u0103 r\u0103spund la toate.<\/p>\n<p>\u0218i iat\u0103 c\u00e2teva linkuri utile: <noindex><a rel=\"nofollow\" href=\"https:\/\/networkx.github.io\/\">biblioteca NetworkX<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.graphviz.org\/\">vizualizator Graphviz<\/a><\/noindex>. Iar aici <noindex><a rel=\"nofollow\" href=\"http:\/\/habr.com\/ru\/post\/455762\">pe Habr este un articol<\/a><\/noindex> despre lan\u021burile Markov. Graficele din articol sunt realizate cu ajutorul <noindex><a rel=\"nofollow\" href=\"https:\/\/gephi.org\/\">Gephi<\/a><\/noindex>.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/473124\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u0412\u0435\u0434\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u2014 \u043d\u0435 \u043d\u0435\u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0438 \u0446\u0435\u043b\u044c\u043d\u043e\u0435, \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432. \u0412\u043e\u0442 \u043e\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39547,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0446\u0435\u043f\u0438 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0432 \u043e\u0446\u0435\u043d\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0431\u0430\u0433\u043e\u0432. \u0421\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043d\u0430 Python | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:35:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:35:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Cum folosim lan\u021burile Markov \u00een evaluarea deciziilor \u0219i g\u0103sirea bugurilor. Cu scriptul \u00een Python | ProHoster","description":"Este important s\u0103 \u00een\u021belegem ce se \u00eent\u00e2mpl\u0103 cu studen\u021bii no\u0219tri \u00een timpul \u00eenv\u0103\u021b\u0103rii \u0219i cum aceste evenimente influen\u021beaz\u0103 rezultatul, a\u0219a c\u0103 contur\u0103m Customer Journey Map \u2014 harta experien\u021bei clientului.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0446\u0435\u043f\u0438 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0432 \u043e\u0446\u0435\u043d\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0431\u0430\u0433\u043e\u0432. \u0421\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043d\u0430 Python | ProHoster","og:description":"\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Customer Journey Map \u2014 \u043a\u0430\u0440\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:35:27+00:00","article:modified_time":"2019-10-31T19:35:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39546","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 02:13:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:16:25","updated":"2026-01-24 02:13:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/39546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=39546"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/39546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/39547"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=39546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=39546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=39546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}