{"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\/sq\/blog\/novosti-interneta\/kak-my-ispolzuem-tsepi-markova-v-otsenke-reshenij-i-poiske-bagov-so-skriptom-na-python","title":{"rendered":"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Na \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptojm\u00eb se \u00e7far\u00eb ndodh me student\u00ebt tan\u00eb gjat\u00eb m\u00ebsimit dhe si k\u00ebto ngjarje ndikojn\u00eb n\u00eb rezultatet, prandaj ne krijojm\u00eb Hart\u00ebn e Udh\u00ebtimit t\u00eb Klientit \u2014 hart\u00ebn e p\u00ebrvoj\u00ebs s\u00eb klientit. Procesi i m\u00ebsimit nuk \u00ebsht\u00eb nj\u00eb gj\u00eb e vazhdueshme dhe e nj\u00ebtrajtshme; \u00ebsht\u00eb nj\u00eb varg ngjarjesh dhe veprimesh t\u00eb nd\u00ebrlidhura t\u00eb student\u00ebve, dhe k\u00ebto veprime mund t\u00eb dallohen shum\u00eb nga nj\u00ebri student n\u00eb tjetrin. Ky student ka p\u00ebrfunduar nj\u00eb m\u00ebsim: \u00e7far\u00eb do t\u00eb b\u00ebj\u00eb m\u00eb pas? Do t\u00eb shkoj\u00eb p\u00ebr n\u00eb detyr\u00ebn e sht\u00ebpis\u00eb? Do t\u00eb hap\u00eb aplikacionin mobil? Do t\u00eb ndryshoj\u00eb kursin, do t\u00eb k\u00ebrkoj\u00eb t\u00eb ndryshoj\u00eb m\u00ebsuesin? Do t\u00eb hyj\u00eb menj\u00ebher\u00eb n\u00eb m\u00ebsimin tjet\u00ebr? Apo thjesht do t\u00eb largohet i zhg\u00ebnjyer? A \u00ebsht\u00eb e mundur q\u00eb, duke analizuar k\u00ebt\u00eb hart\u00eb, t\u00eb identifikojm\u00eb tendenca q\u00eb \u00e7ojn\u00eb n\u00eb p\u00ebrfundimin e suksessh\u00ebm t\u00eb kursit ose, nga ana tjet\u00ebr, q\u00eb \u00e7ojn\u00eb n\u00eb \"largimin\" e student\u00ebve?<\/p>\n<p><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/3eaee2e858273669b4490f6ceb65d281.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZakonisht, p\u00ebr nd\u00ebrtimin e CJM p\u00ebrdoren mjete t\u00eb specializuara, mjaft t\u00eb shtrenjta me kod t\u00eb mbyllur. Por ne doja t\u00eb mendonim p\u00ebr di\u00e7ka t\u00eb thjesht\u00eb, q\u00eb k\u00ebrkonte p\u00ebrpjekje minimale dhe, sa m\u00eb shum\u00eb t\u00eb ishte e mundur, me kod t\u00eb hapur. K\u00ebshtu lindi ideja p\u00ebr t\u00eb p\u00ebrdorur zinxhir\u00ebt Markov \u2014 dhe ia dol\u00ebm. Nd\u00ebrtuam nj\u00eb hart\u00eb, interpretuam t\u00eb dh\u00ebnat mbi sjelljen e student\u00ebve n\u00eb form\u00ebn e nj\u00eb grafi, pan\u00eb p\u00ebrgjigje t\u00eb paqarta p\u00ebr pyetje globale t\u00eb biznesit dhe madje gjet\u00ebm bugs t\u00eb thella t\u00eb fshehura. T\u00eb gjitha k\u00ebto i b\u00ebm\u00eb me ndihm\u00ebn e zgjidhjeve me kod t\u00eb hapur Python. N\u00eb k\u00ebt\u00eb artikull do t\u00eb tregoj p\u00ebr dy raste me ato rezultate pik\u00ebrisht t\u00eb paqarta dhe do t\u00eb ndaj skenarin me t\u00eb gjith\u00eb ata q\u00eb jan\u00eb t\u00eb interesuar.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPra, zinxhir\u00ebt Markov tregojn\u00eb probabilitetin e kalimeve nd\u00ebrmjet ngjarjeve. K\u00ebtu \u00ebsht\u00eb nj\u00eb shembull primitv nga Wikipedia:<\/p>\n<p><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/978e18169ba4c7b2b71787536e4bb219.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebtu \"E\" dhe \"A\" jan\u00eb ngjarje, shigjetat jan\u00eb kalime midis tyre (p\u00ebrfshir\u00eb kalimin nga nj\u00eb ngjarje n\u00eb vetveten), dhe pesha e shigjetave \u00ebsht\u00eb probabiliteti i kalimit (\"graf i orientuar me pesha\").<\/p>\n<h2>\u00c7far\u00eb p\u00ebrdor\u00ebm<\/h2>\n<p>\nZgjidhja u trajnua me funksionalitetin standard t\u00eb Python, i cili p\u00ebrfshinte logjet e aktivitetit t\u00eb student\u00ebve. Grafiku mbi matric\u00ebn e marr\u00eb u nd\u00ebrtua me bibliotek\u00ebn NetworkX.<\/p>\n<p>Logu duket k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/bc75077802cd7eeb00ebe4a56bc61050.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy \u00ebsht\u00eb nj\u00eb skedar csv q\u00eb p\u00ebrmban nj\u00eb tabel\u00eb me tre kolona: id e studentit, emri i ngjarjes, koha kur ndodhi ajo. K\u00ebto tri fusha jan\u00eb t\u00eb mjaftueshme p\u00ebr t\u00eb ndjekur l\u00ebvizjet e klientit, p\u00ebr t\u00eb nd\u00ebrtuar nj\u00eb hart\u00eb dhe p\u00ebrfundimisht p\u00ebr t\u00eb marr\u00eb nj\u00eb zinxhir Markov.<\/p>\n<p>Biblioteka kthen grafet e nd\u00ebrtuara n\u00eb formatin .dot ose .gexf. P\u00ebr vizualizimin e t\u00eb par\u00ebve, mund t\u00eb p\u00ebrdorni paket\u00ebn falas Graphviz (instrumentin gvedit); ne kemi punuar me .gexf dhe Gephi, gjithashtu falas.<\/p>\n<p>M\u00eb pas do t\u00eb sjell dy shembuj t\u00eb p\u00ebrdorimit t\u00eb zinxhir\u00ebve Markov, t\u00eb cilat na lejuan t\u00eb shohim q\u00ebllimet tona, proceset m\u00ebsimore dhe vet\u00eb ekosistemin Skyeng nga nj\u00eb k\u00ebndv\u00ebshtrim t\u00eb ri. Po ashtu, t\u00eb korrigjojm\u00eb disa probleme.<\/p>\n<h2>Shembulli i par\u00eb: aplikacioni mobil<\/h2>\n<p>\nP\u00ebr fillim, ne hulumtuam rrug\u00ebn e student\u00ebve p\u00ebr produktin ton\u00eb m\u00eb t\u00eb popullarizuar \u2014 kursin General. N\u00eb at\u00eb koh\u00eb, un\u00eb punoja n\u00eb departamentin e f\u00ebmij\u00ebve n\u00eb Skyeng dhe ne donim t\u00eb shihnim sa efikas \u00ebsht\u00eb aplikacioni mobil me audienc\u00ebn ton\u00eb t\u00eb f\u00ebmij\u00ebve.<\/p>\n<p>Pas\u00eb marr\u00eb log\u00ebt dhe i kalova ato p\u00ebrmes skriptit, mora di\u00e7ka t\u00eb till\u00eb:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ws\/ru\/de\/wsrudeufw3pzwrrxtxtn1pjeqvu.png\"><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/f2533ddfae7d5f85d0e86902b9b7005f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Noda fillestare \u2014 Start General, dhe posht\u00eb tre nodat dal\u00ebse: studenti \u00abka fjetur\u00bb, ndryshoi kursin, p\u00ebrfundoi kursin.<\/p>\n<ul>\n<li>Ka fjetur, \u00abKa fjetur\u00bb \u2014 do t\u00eb thot\u00eb se nuk po vazhdon m\u00ebsimet, shum\u00eb mund\u00ebsisht, ai \u00ebsht\u00eb larguar. Ne e quajm\u00eb optimistisht k\u00ebt\u00eb gjendje \u00abka fjetur\u00bb, pasi teorikisht ka ende mund\u00ebsin\u00eb t\u00eb vazhdoj\u00eb m\u00ebsimin. Rezultati m\u00eb i keq p\u00ebr ne.<\/li>\n<li>Ndryshoi kursin, ka kaluar nga General n\u00eb di\u00e7ka tjet\u00ebr dhe humbi p\u00ebr rrjetin ton\u00eb Markov.<\/li>\n<li>P\u00ebrfundoi kursin, gjendja ideale, personi kaloi 80% t\u00eb m\u00ebsimeve (jo t\u00eb gjitha m\u00ebsimet jan\u00eb t\u00eb detyrueshme).<\/li>\n<\/ul>\n<p>\nPjes\u00ebmarrja n\u00eb nod\u00ebn successful class do t\u00eb thot\u00eb kalim t\u00eb suksessh\u00ebm t\u00eb m\u00ebsimit n\u00eb platform\u00ebn ton\u00eb me m\u00ebsuesin. Ajo regjistron avancimin n\u00eb kurs dhe af\u00ebrsin\u00eb me rezultatin e d\u00ebshiruar \u2014 \u00abP\u00ebrfundoi kursin\u00bb. Na r\u00ebnd\u00ebsishme q\u00eb student\u00ebt ta vizitojn\u00eb sa m\u00eb shum\u00eb.<\/p>\n<p>P\u00ebr t\u00eb marr\u00eb konkluzione m\u00eb t\u00eb sakta sasiore p\u00ebr aplikacionin mobil (noda app session), nd\u00ebrtuam zinxhir\u00eb t\u00eb ve\u00e7ant\u00eb p\u00ebr secil\u00ebn nga nodat p\u00ebrfundimtare dhe m\u00eb pas krahasuam pesha t\u00eb brendshme:<\/p>\n<ul>\n<li>nga app session mbrapsht n\u00eb t\u00eb nj\u00ebjtin;<\/li>\n<li>nga app session n\u00eb successful class;<\/li>\n<li>nga successful class n\u00eb app session.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/iw\/mz\/yq\/iwmzyqmlmbkgzmjqa7qhxwd7shq.png\"><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/fc68ca73b379f57a38b53f0c31e75cb1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>N\u00eb maj\u00eb \u2014 student\u00ebt q\u00eb p\u00ebrfunduan kursin, n\u00eb t\u00eb djatht\u00eb \u2014 ata q\u00eb \"flinin\"<\/i><\/p>\n<p>K\u00ebto tri grafa tregojn\u00eb lidhjen mes suksesit t\u00eb studentit dhe p\u00ebrdorimit t\u00eb aplikacionit mobil. Ne prisnim t\u00eb shihnim se student\u00ebt q\u00eb p\u00ebrfunduan kursin do kishin nj\u00eb lidhje m\u00eb t\u00eb fort\u00eb me aplikacionin se ata q\u00eb \"flinin\". Megjithat\u00eb, p\u00ebrfundimisht mor\u00ebm rezultate t\u00eb kund\u00ebrta:<\/p>\n<ul>\n<li>ne konstatuam se grupe t\u00eb ndryshme p\u00ebrdoruesish nd\u00ebrveprojn\u00eb ndryshe me aplikacionin mobil;<\/li>\n<li>student\u00ebt e suksessh\u00ebm p\u00ebrdorin m\u00eb pak intensitet aplikacionin mobil;<\/li>\n<li>student\u00ebt q\u00eb flinin p\u00ebrdorin m\u00eb aktivisht aplikacionin mobil.<\/li>\n<\/ul>\n<p>\nKjo do t\u00eb thot\u00eb se student\u00ebt \"f sleeping\" fillojn\u00eb t\u00eb kalojn\u00eb gjithnj\u00eb e m\u00eb shum\u00eb koh\u00eb n\u00eb aplikacionin mobil dhe n\u00eb fund mbeten atje p\u00ebrgjithmon\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/45c17a908e2178edd99e340f34657cad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00eb pari u habit\u00ebm, por pas disa mendimeve, e kuptuam se ishte nj\u00eb efekt krejt\u00ebsisht i natyrsh\u00ebm. Nj\u00ebher\u00eb, kam m\u00ebsuar fr\u00ebngjishten duke p\u00ebrdorur dy mjete: nj\u00eb aplikacion celular dhe ligje p\u00ebr gramatik\u00ebn n\u00eb YouTube. N\u00eb fillim e ndaja koh\u00ebn time midis tyre me nj\u00eb raport 50 me 50. Por aplikacioni \u00ebsht\u00eb m\u00eb arg\u00ebtues, ka gamifikim, gjith\u00e7ka \u00ebsht\u00eb e thjesht\u00eb, e shpejt\u00eb dhe e kuptueshme, nd\u00ebrsa n\u00eb ligjet duhet t\u00eb p\u00ebrqendrohem, t\u00eb shkruaj di\u00e7ka dhe t\u00eb praktikoj n\u00eb ditar. Gradualisht, fillova t\u00eb kaloj m\u00eb shum\u00eb koh\u00eb n\u00eb smartphone, derisa pjesa e tij arriti n\u00eb 100%: n\u00ebse kalon tre or\u00eb aty, krijohet nj\u00eb ndjesi e gabuar e p\u00ebrfundimit t\u00eb pun\u00ebs, p\u00ebr shkakun e t\u00eb cil\u00ebs nuk kam asnj\u00eb d\u00ebshir\u00eb t\u00eb shkoj dhe t\u00eb d\u00ebgjoj di\u00e7ka.<\/p>\n<p>Por si \u00ebsht\u00eb e mundur? Sepse ne e krijuam ve\u00e7an\u00ebrisht aplikacionin celular, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/312126\/\">e integruam me kurb\u00ebn e Ebbinghausit<\/a><\/noindex>, e gamifikuam, e b\u00ebm\u00eb t\u00ebrheq\u00ebse, q\u00eb njer\u00ebzit t\u00eb kalonin koh\u00eb n\u00eb t\u00eb, dhe rezulton se vet\u00ebm i shp\u00ebrqendron? N\u00eb t\u00eb v\u00ebrtet\u00eb, arsyeja \u00ebsht\u00eb se ekipi i aplikacionit celular e ka b\u00ebr\u00eb kaq mir\u00eb pun\u00ebn e tij, saq\u00eb \u00ebsht\u00eb b\u00ebre nj\u00eb produkt i shk\u00eblqyer i pavarur dhe ka filluar t\u00eb dal\u00eb jasht\u00eb ekosistemit ton\u00eb.<\/p>\n<p>Si rezultat i studimit, u arrit n\u00eb p\u00ebrfundimin se aplikacioni mobil duhet t\u00eb ndryshohet ndonj\u00ebher\u00eb, p\u00ebr t\u00eb mos e t\u00ebrhequr shum\u00eb nga kursi kryesor i m\u00ebsimit. Kjo vlen p\u00ebr t\u00eb dyja, f\u00ebmij\u00ebt dhe t\u00eb rriturit. Aktualisht, kjo pun\u00eb \u00ebsht\u00eb duke u kryer.<\/p>\n<h2>Rasti i dyt\u00eb: defektet e onboardingut<\/h2>\n<p>\nOnboarding \u00ebsht\u00eb nj\u00eb procedur\u00eb e opcional, e cila ndihmon gjat\u00eb regjistrimit t\u00eb nj\u00eb nx\u00ebn\u00ebsi t\u00eb ri dhe e shfuqizon potencialisht problemet teknike n\u00eb t\u00eb ardhmen. Skenari baz\u00eb n\u00ebnkupton se personi \u00ebsht\u00eb regjistruar n\u00eb landing page, ka marr\u00eb qasje n\u00eb llogarin\u00eb personale, jan\u00eb n\u00eb kontakt me t\u00eb dhe b\u00ebjn\u00eb nj\u00eb m\u00ebsim t\u00eb hyrjes. Gjat\u00eb k\u00ebsaj, ne v\u00ebrejm\u00eb nj\u00eb p\u00ebrqindje t\u00eb madhe t\u00eb v\u00ebshtir\u00ebsive teknike gjat\u00eb m\u00ebsimit t\u00eb hyrjes: versioni i gabuar i shfletuesit, mikrofonin ose tingujt q\u00eb nuk punojn\u00eb, m\u00ebsuesi nuk mund ta jap\u00eb menj\u00ebher\u00eb nj\u00eb zgjidhje, dhe e gjith\u00eb kjo \u00ebsht\u00eb ve\u00e7an\u00ebrisht e v\u00ebshtir\u00eb kur flitet p\u00ebr f\u00ebmij\u00ebt. Prandaj, ne kemi zhvilluar nj\u00eb aplikacion shtes\u00eb n\u00eb llogarin\u00eb personale, ku mund t\u00eb p\u00ebrfundohet kat\u00ebr hapa t\u00eb thjesht\u00eb: kontrolloni shfletuesin, kamer\u00ebn, mikrofonin dhe konfirmoni se prind\u00ebrit do t\u00eb jen\u00eb pran\u00eb gjat\u00eb m\u00ebsimit t\u00eb hyrjes (pasi ata jan\u00eb ata q\u00eb paguajn\u00eb p\u00ebr m\u00ebsimin e f\u00ebmij\u00ebve).<\/p>\n<p>K\u00ebto disa faqe on boarding tregonin nj\u00eb funnel t\u00eb till\u00eb:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/l5\/pt\/aj\/l5ptajlgx6msydvswctke1w505w.jpeg\"><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/5e949640d4d4f8a70dc4fd677e3c93a7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>1: blloku fillestar me tre forma pak t\u00eb ndryshme (n\u00eb var\u00ebsi t\u00eb klientit) p\u00ebr futjen e p\u00ebrdoruesit dhe fjal\u00ebkalimit.<br \/>\n2: kutia e pajtimit p\u00ebr nj\u00eb procedur\u00eb shtes\u00eb onboarding.<br \/>\n2.1-2.3: kontrolli i pranis\u00eb s\u00eb prindit, versions s\u00eb Chrome dhe z\u00ebrit.<br \/>\n3: blloku p\u00ebrfundimtar.<\/i><\/p>\n<p>Duket shum\u00eb natyrsh\u00ebm: n\u00eb dy hapat e par\u00eb pjesa m\u00eb e madhe e vizitor\u00ebve largohet, duke kuptuar se duhet t\u00eb plot\u00ebsojn\u00eb, kontrollojn\u00eb, dhe se nuk kan\u00eb koh\u00eb. N\u00ebse klienti arrin hapin e tret\u00eb \u2014 ai pothuajse me siguri do t\u00eb arrij\u00eb n\u00eb p\u00ebrfundim. N\u00eb tunelin e konvertimit nuk duket asnj\u00eb arsyetim p\u00ebr t\u00eb dyshuar se di\u00e7ka nuk shkon.<\/p>\n<p>Megjithat\u00eb, vendos\u00ebm t\u00eb analizojm\u00eb onboarding-un ton\u00eb jo n\u00eb nj\u00eb tunel klasik nj\u00eb-dimensional, por me ndihm\u00ebn e zinxhirit Markov. P\u00ebrfshim\u00eb pak m\u00eb shum\u00eb ngjarje, aktivizuam skenarin dhe dham\u00eb k\u00ebt\u00eb rezultat:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/pi\/e6\/9p\/pie69p-4rmwaqdqqunigm3oz8am.png\"><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/44c094cb0be013beac00c0af5a3801be.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>T\u00eb kuptosh qart\u00eb n\u00eb k\u00ebt\u00eb kaos mund t\u00eb thuhet vet\u00ebm nj\u00eb gj\u00eb: di\u00e7ka nuk shkoi si\u00e7 duhet. Procesi i onboarding-ut \u00ebsht\u00eb linear, kjo \u00ebsht\u00eb e inkorporuar n\u00eb dizajn, dhe nuk duhet t\u00eb ket\u00eb nj\u00eb rrjet t\u00eb till\u00eb lidhjesh. Dhe k\u00ebtu menj\u00ebher\u00eb duket se p\u00ebrdoruesi l\u00ebviz mes hapave, mes t\u00eb cil\u00ebve nuk duhet t\u00eb ket\u00eb kalime.<\/p>\n<p><img decoding=\"async\" alt=\"Si i p\u00ebrdorim zinxhir\u00ebt Markov n\u00eb vler\u00ebsimin e vendimeve dhe k\u00ebrkimin e gabimeve. Me nj\u00eb skript n\u00eb Python\" src=\"\/wp-content\/uploads\/2019\/10\/f43fcabaa7b773c17741b4eaa927b600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArsyet p\u00ebr k\u00ebt\u00eb pamje t\u00eb \u00e7uditshme mund t\u00eb jen\u00eb dy:<\/p>\n<ul>\n<li>gabime jan\u00eb fshehur n\u00eb baz\u00ebn e log-eve;<\/li>\n<li>problem p\u00ebrmbajn\u00eb n\u00eb produktin vet\u00eb \u2014 onboarding.<\/li>\n<\/ul>\n<p>\nArsyeja e par\u00eb, me siguri, ekziston, por t\u00eb kontrollosh at\u00eb \u00ebsht\u00eb mjaft pun\u00eb e v\u00ebshtir\u00eb, dhe korrigjimi i log\u00ebve nuk ndihmon aspak n\u00eb p\u00ebrmir\u00ebsimin e UX. Nd\u00ebrsa p\u00ebr t\u00eb dyt\u00ebn, n\u00ebse ekziston, duhej t\u00eb merreshim urgjentisht me at\u00eb. Prandaj, filluam t\u00eb shqyrtonim nyjet, t\u00eb identifikonim skajet q\u00eb nuk duhej t\u00eb ishin, t\u00eb k\u00ebrkonim arsyet e shfaqjes s\u00eb tyre. V\u00ebrejta se disa p\u00ebrdorues ngacmoheshin dhe rrotulloheshin n\u00eb nj\u00eb cik\u00ebl, disa t\u00eb tjer\u00eb \u2014 dilnin nga mesi n\u00eb fillim, t\u00eb tret\u00ebt n\u00eb t\u00ebr\u00ebsi nuk mund t\u00eb dilnin nga dy hapat e par\u00eb. I p\u00ebrcoll\u00ebm t\u00eb dh\u00ebnat n\u00eb QA \u2014 dhe po, doli se n\u00eb onboarding kishte shum\u00eb bugs: ky \u00ebsht\u00eb nj\u00eb produkt i till\u00eb an\u00ebsor, pak i p\u00ebrkohsh\u00ebm, nuk ishte testuar mjaft thell\u00eb, sepse nuk prisnim ndonj\u00eb problem. Tani i gjith\u00eb procesi i regjistrimit \u00ebsht\u00eb nd\u00ebrruar.<\/p>\n<p>Kjo histori na tregoi nj\u00eb p\u00ebrdorim t\u00eb papritur t\u00eb zinxhir\u00ebve Markov n\u00eb fush\u00ebn e QA.<\/p>\n<h3>Provoje vet\u00eb!<\/h3>\n<p>\nKam postuar skriptin tim <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/BartolomeuD\/markov-chain\">Python p\u00ebr trajnimin e zinxhir\u00ebve Markov<\/a><\/noindex> n\u00eb akses t\u00eb hapur \u2014 p\u00ebrdorni me sh\u00ebndet. Dokumentacioni n\u00eb GitHub, pyetje mund t\u00eb b\u00ebhen k\u00ebtu, do t\u00eb p\u00ebrpiqem t\u00eb p\u00ebrgjigjem p\u00ebr t\u00eb gjitha.<\/p>\n<p>Dhe disa lidhje t\u00eb dobishme: <noindex><a rel=\"nofollow\" href=\"https:\/\/networkx.github.io\/\">biblioteka NetworkX<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.graphviz.org\/\">vizualizuesi Graphviz<\/a><\/noindex>. K\u00ebtu <noindex><a rel=\"nofollow\" href=\"http:\/\/habr.com\/ru\/post\/455762\">n\u00eb Habr\u00eb ka nj\u00eb artikull<\/a><\/noindex> rreth zinxhir\u00ebve Markov. Grafet n\u00eb artikull jan\u00eb b\u00ebr\u00eb me ndihm\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/gephi.org\/\">Gephi<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.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\/sq\/blog\/novosti-interneta\/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.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/blog\/novosti-interneta\/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\udd47Si si p\u00ebrdorim zinxhir\u00ebt e Markov p\u00ebr vler\u00ebsimin e vendimeve dhe gjetjen e defekteve. Me skript n\u00eb Python | ProHoster","description":"Na \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptojm\u00eb se \u00e7far\u00eb po ndodh me student\u00ebt tan\u00eb gjat\u00eb m\u00ebsimit dhe si k\u00ebto ngjarje ndikojn\u00eb n\u00eb rezultat, prandaj ne krijojm\u00eb nj\u00eb Hart\u00eb t\u00eb Udh\u00ebtimit t\u00eb Klientit - nj\u00eb hart\u00eb t\u00eb p\u00ebrvoj\u00ebs s\u00eb klientit.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/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":"sq_AL","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\/sq\/blog\/novosti-interneta\/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\/sq\/wp-json\/wp\/v2\/posts\/39546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=39546"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/39546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/39547"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=39546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=39546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=39546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}