Unsa ang mahimong sayup sa Data Science? Pagkolekta sa datos

Unsa ang mahimong sayup sa Data Science? Pagkolekta sa datos
Karon adunay 100500 nga mga kurso sa Data Science ug dugay nang nahibal-an nga ang labing daghang salapi sa Data Science mahimong makuha pinaagi sa mga kurso sa Data Science (ngano nga magkalot kung mahimo nimo ibaligya ang mga pala?). Ang nag-unang disbentaha niini nga mga kurso mao nga wala sila'y labot sa tinuod nga trabaho: walay usa nga mohatag kanimo og limpyo, giproseso nga datos sa gikinahanglan nga format. Ug kung mobiya ka sa kurso ug magsugod sa pagsulbad sa usa ka tinuud nga problema, daghang mga nuances ang mitumaw.

Busa, nagsugod kami sa usa ka serye sa mga nota "Unsa ang mahimo nga sayup sa Data Science", base sa tinuod nga mga panghitabo nga nahitabo kanako, akong mga kauban ug mga kauban. Among analisahon ang kasagaran nga mga buluhaton sa Data Science gamit ang tinuod nga mga pananglitan: kung giunsa kini sa tinuod mahitabo. Magsugod kita karon sa buluhaton sa pagkolekta sa datos.

Ug ang una nga butang nga mapandol sa mga tawo kung nagsugod sila sa pagtrabaho sa tinuud nga datos mao ang tinuud nga pagkolekta sa kini nga datos nga labing may kalabutan sa amon. Ang yawe nga mensahe niini nga artikulo:

Among sistematikong gipaubos ang panahon, kahinguhaan, ug paningkamot nga gikinahanglan sa pagkolekta, paglimpyo, ug pag-andam sa datos.

Ug labaw sa tanan, atong hisgutan kung unsa ang buhaton aron malikayan kini.

Sumala sa lain-laing mga banabana, paghinlo, pagbag-o, data processing, bahin engineering, ug uban pa sa pagkuha sa 80-90% sa panahon, ug pagtuki sa 10-20%, samtang halos tanan nga edukasyon nga materyal nagtutok lamang sa pagtuki.

Atong tan-awon ang usa ka yano nga analitikal nga problema sa tulo ka mga bersyon isip usa ka tipikal nga pananglitan ug tan-awon kung unsa ang "makapagrabe nga mga kahimtang".

Ug isip usa ka pananglitan, pag-usab, atong tagdon ang susama nga mga kalainan sa tahas sa pagkolekta sa datos ug pagtandi sa mga komunidad alang sa:

  1. Duha ka Reddit subreddits
  2. Duha ka seksyon sa Habr
  3. Duha ka grupo sa Odnoklassniki

Kondisyon nga pamaagi sa teorya

Ablihi ang site ug basaha ang mga pananglitan, kung klaro, paggahin og pipila ka oras alang sa pagbasa, pipila ka oras alang sa code gamit ang mga pananglitan ug pag-debug. Pagdugang og pipila ka oras alang sa pagkolekta. Ilabay sa pipila ka oras sa reserba (multiply sa duha ug dugangan N oras).

Panguna nga Punto: Ang mga banabana sa oras gibase sa mga pangagpas ug pagtag-an kung unsa kadugay kini.

Kinahanglan nga sugdan ang pagtuki sa oras pinaagi sa pagbanabana sa mga mosunud nga mga parameter alang sa kondisyon nga problema nga gihulagway sa ibabaw:

  • Unsa ang gidak-on sa datos ug pila niini ang kinahanglan nga pisikal nga kolektahon (*tan-awa sa ubos*).
  • Unsa ang oras sa pagkolekta alang sa usa ka rekord ug unsa ka dugay ang imong paghulat sa dili pa nimo makolekta ang ikaduha?
  • Ikonsiderar ang pagsulat sa code nga makaluwas sa estado ug magsugod pag-usab kung (dili kung) mapakyas ang tanan.
  • Hunahunaa kung kinahanglan ba namon ang pagtugot ug itakda ang oras alang sa pagkuha sa pag-access pinaagi sa API.
  • Ibutang ang gidaghanon sa mga kasaypanan isip usa ka function sa pagkakomplikado sa datos - pagtimbang-timbang alang sa usa ka piho nga buluhaton: istruktura, pila ka mga pagbag-o, unsa ug unsaon pagkuha.
  • Pag-ayo sa mga sayup sa network ug mga problema sa dili standard nga pamatasan sa proyekto.
  • Pagtimbang-timbang kung ang gikinahanglan nga mga gimbuhaton naa sa dokumentasyon ug kung wala, kung giunsa ug pila ang kinahanglan alang sa usa ka solusyon.

Ang labing hinungdanon nga butang mao nga aron mabanabana ang oras - kinahanglan gyud nimo nga mogugol ug oras ug paningkamot sa "reconnaissance in force" - unya igo ra ang imong pagplano. Busa, bisan unsa pa ka daghan ang giduso sa pag-ingon "unsa kadugay ang pagkolekta sa datos" - pagpalit sa imong kaugalingon og pipila ka panahon alang sa usa ka pasiuna nga pagtuki ug pakiglantugi kung unsa kadaghan ang panahon nga magkalahi depende sa tinuod nga mga parameter sa buluhaton.

Ug karon ipakita namon ang piho nga mga pananglitan kung diin magbag-o ang ingon nga mga parameter.

Panguna nga Punto: Ang banabana gibase sa usa ka pagtuki sa yawe nga mga hinungdan nga nakaimpluwensya sa kasangkaran ug kakomplikado sa trabaho.

Ang pagbanabana nga gibase sa pagtag-an usa ka maayong pamaagi kung ang mga elemento nga magamit gamay ra ug wala’y daghang mga hinungdan nga makaimpluwensya sa disenyo sa problema. Apan sa kaso sa daghang mga problema sa Data Science, ang ingon nga mga hinungdan mahimong labi ka daghan ug ang ingon nga pamaagi mahimong dili igo.

Pagtandi sa mga komunidad sa Reddit

Magsugod kita sa pinakasimple nga kaso (ingon sa ulahi). Sa kinatibuk-an, aron mahimong hingpit nga matinud-anon, kami adunay usa ka hapit maayo nga kaso, atong susihon ang among pagkakomplikado nga checklist:

  • Adunay usa ka hapsay, tin-aw ug dokumentado nga API.
  • Kini labi ka yano ug labing hinungdanon, ang usa ka token awtomatikong makuha.
  • Adunay python wrapper - nga adunay daghang mga pananglitan.
  • Usa ka komunidad nga nag-analisar ug nagkolekta sa datos sa reddit (bisan sa mga video sa YouTube nga nagpatin-aw kung giunsa paggamit ang python wrapper) Pananglitan.
  • Ang mga pamaagi nga among gikinahanglan lagmit anaa sa API. Dugang pa, ang code tan-awon nga compact ug limpyo, sa ubos usa ka pananglitan sa usa ka function nga nagkolekta mga komento sa usa ka post.

def get_comments(submission_id):
    reddit = Reddit(check_for_updates=False, user_agent=AGENT)
    submission = reddit.submission(id=submission_id)
    more_comments = submission.comments.replace_more()
    if more_comments:
        skipped_comments = sum(x.count for x in more_comments)
        logger.debug('Skipped %d MoreComments (%d comments)',
                     len(more_comments), skipped_comments)
    return submission.comments.list()

Gikuha gikan sa kini usa ka pagpili sa kombenyente nga mga gamit alang sa pagputos.

Bisan pa sa kamatuoran nga kini ang pinakamaayo nga kaso, angay gihapon nga tagdon ang daghang importanteng mga butang gikan sa tinuod nga kinabuhi:

  • Mga limitasyon sa API - napugos kami sa pagkuha sa datos sa mga batch (pagkatulog tali sa mga hangyo, ug uban pa).
  • Oras sa pagkolekta - alang sa usa ka kompleto nga pag-analisar ug pagtandi, kinahanglan nimo nga igahin ang hinungdanon nga oras alang lamang sa spider nga maglakaw sa subreddit.
  • Ang bot kinahanglan nga modagan sa usa ka server-dili nimo mahimo nga ipadagan kini sa imong laptop, ibutang kini sa imong backpack, ug ipadayon ang imong negosyo. Mao nga gipadagan nako ang tanan sa usa ka VPS. Gamit ang promotional code nga habrahabr10 makadaginot ka ug laing 10% sa gasto.
  • Ang pisikal nga pagkadili ma-access sa pipila nga mga datos (kini makita sa mga administrador o lisud kaayo nga kolektahon) - kini kinahanglan nga tagdon; sa prinsipyo, dili tanan nga datos mahimong makolekta sa igo nga oras.
  • Mga sayop sa network: Ang networking usa ka kasakit.
  • Kini ang buhi nga tinuod nga datos - kini dili putli.

Siyempre, gikinahanglan nga ilakip kini nga mga nuances sa pag-uswag. Ang piho nga mga oras/adlaw nagdepende sa kasinatian sa pag-uswag o kasinatian nga nagtrabaho sa parehas nga mga buluhaton, bisan pa, nakita namon nga dinhi ang buluhaton lunsay nga inhenyero ug wala magkinahanglan dugang nga mga lihok sa lawas aron masulbad - ang tanan mahimo’g maayo nga masusi, ma-iskedyul ug mahuman.

Pagtandi sa mga seksyon sa Habr

Mopadayon kita sa usa ka labi ka makapaikag ug dili hinungdanon nga kaso sa pagtandi sa mga hilo ug / o mga seksyon sa Habr.

Atong susihon ang among checklist sa pagkakomplikado - dinhi, aron masabtan ang matag punto, kinahanglan nimo nga magkalot og gamay sa buluhaton mismo ug mag-eksperimento.

  • Sa sinugdan imong gihunahuna nga adunay usa ka API, apan wala. Oo, oo, ang Habr adunay API, apan dili kini ma-access sa mga tiggamit (o tingali dili kini molihok).
  • Unya magsugod ka lang sa pag-parse sa html - "mga hangyo sa pag-import", unsa ang mahimong sayup?
  • Unsaon man pag-parse? Ang pinakayano ug kanunay nga gigamit nga pamaagi mao ang pag-uli sa mga ID, timan-i nga dili kini ang labing episyente ug kinahanglan nga magdumala sa lainlaing mga kaso - ania ang usa ka pananglitan sa densidad sa tinuod nga mga ID taliwala sa tanan nga anaa na.

    Unsa ang mahimong sayup sa Data Science? Pagkolekta sa datos
    Gikuha gikan sa kini mga artikulo.

  • Ang hilaw nga datos nga giputos sa HTML sa ibabaw sa web usa ka sakit. Pananglitan, gusto nimong kolektahon ug i-save ang rating sa usa ka artikulo: gikuha nimo ang marka gikan sa html ug nakahukom nga i-save kini ingon usa ka numero alang sa dugang nga pagproseso: 

    1) int(iskor) naglabay sa usa ka sayup: tungod kay sa Habré adunay usa ka minus, sama pananglitan, sa linya nga "-5" - kini usa ka en dash, dili usa ka minus nga timaan (wala damha, di ba?), busa sa pila ka punto kinahanglan nako nga buhion ang parser sa usa ka makalilisang nga pag-ayo.

    try:
          score_txt = post.find(class_="score").text.replace(u"–","-").replace(u"+","+")
          score = int(score_txt)
          if check_date(date):
            post_score += score
    

    Mahimong walay petsa, plus ug minus sa tanan (ingon sa atong makita sa ibabaw sa check_date function, kini nahitabo).

    2) Wala makalikay nga mga espesyal nga karakter - moabut sila, kinahanglan ka nga andam.

    3) Ang istruktura nagbag-o depende sa klase sa post.

    4) Ang mga daan nga post mahimo’g adunay usa ka **katingad-an nga istruktura**.

  • Sa tinuud, ang pagdumala sa sayup ug kung unsa ang mahimo o dili mahitabo kinahanglan nga dumalahon ug dili nimo matagna kung unsa ang sayup ug kung unsa pa ang mahimo sa istruktura ug kung unsa ang mahulog kung diin - kinahanglan nimo nga sulayan ug tagdon ang mga sayop nga gilabay sa parser.
  • Unya nahibal-an nimo nga kinahanglan nimo nga mag-parse sa daghang mga hilo, kung dili ang pag-parse sa usa unya mokabat sa 30+ ka oras (kini mao ra ang oras sa pagpatuman sa usa ka nagtrabaho nga single-threaded parser, nga natulog ug wala mahulog sa bisan unsang pagdili). SA kini artikulo, mitultol kini sa usa ka punto sa susamang laraw:

Unsa ang mahimong sayup sa Data Science? Pagkolekta sa datos

Kinatibuk-ang checklist pinaagi sa pagkakomplikado:

  • Pagtrabaho uban sa network ug html parsing uban sa pag-uli ug pagpangita pinaagi sa ID.
  • Mga dokumento sa heterogeneous nga istruktura.
  • Adunay daghang mga lugar diin ang code dali nga mahulog.
  • Kinahanglan nga isulat || Code.
  • Wala ang gikinahanglan nga dokumentasyon, mga pananglitan sa code, ug/o komunidad.

Ang gibanabana nga oras alang niini nga buluhaton mahimong 3-5 ka beses nga mas taas kaysa sa pagkolekta sa datos gikan sa Reddit.

Pagtandi sa mga grupo sa Odnoklassniki

Mopadayon kita sa labing teknikal nga makapaikag nga kaso nga gihulagway. Alang kanako, kini tukma nga makapaikag tungod kay sa una nga pagtan-aw, kini tan-awon nga wala’y hinungdan, apan kini dili gyud ingon niana - sa diha nga imong gidukdok ang usa ka sungkod niini.

Magsugod kita sa among checklist sa kalisud ug timan-i nga daghan kanila ang mahimong mas lisud kaysa ilang tan-awon sa una:

  • Adunay usa ka API, apan kini hapit hingpit nga kulang sa gikinahanglan nga mga gimbuhaton.
  • Sa pipila ka mga gimbuhaton kinahanglan nimo nga mangayo og access pinaagi sa koreo, nga mao, ang paghatag sa pag-access dili dayon.
  • Gidokumento kini pag-ayo (sa pagsugod, ang mga termino sa Ruso ug Ingles gisagol bisan asa, ug hingpit nga dili managsama - usahay kinahanglan nimo nga tag-an kung unsa ang gusto nila gikan kanimo sa usa ka lugar) ug, dugang pa, ang disenyo dili angay alang sa pagkuha sa datos, pananglitan , ang function nga atong gikinahanglan.
  • Nanginahanglan usa ka sesyon sa dokumentasyon, apan wala gyud kini gigamit - ug wala’y paagi aron masabtan ang tanan nga mga kakuti sa mga mode sa API gawas sa paglibot ug paglaum nga adunay molihok.
  • Walay mga pananglitan ug walay komunidad; ang bugtong punto sa suporta sa pagkolekta sa impormasyon gamay ra wrapper sa Python (nga walay daghang mga pananglitan sa paggamit).
  • Ang selenium daw mao ang labing magamit nga kapilian, tungod kay daghan sa mga gikinahanglan nga datos ang gi-lock.
    1) Kana mao, ang pagtugot mahitabo pinaagi sa usa ka tinumotumo nga tiggamit (ug pagrehistro pinaagi sa kamot).

    2) Apan, uban sa Selenium walay mga garantiya alang sa husto ug balik-balik nga trabaho (labing menos sa kaso sa ok.ru sigurado).

    3) Ang Ok.ru website adunay mga sayup sa JavaScript ug usahay molihok nga katingad-an ug dili managsama.

    4) Kinahanglan nimong buhaton ang pagination, pag-load sa mga elemento, ug uban pa...

    5) Ang mga kasaypanan sa API nga gihatag sa wrapper kinahanglang dumalahon nga dili maayo, pananglitan, sama niini (usa ka piraso sa eksperimental nga code):

    def get_comments(args, context, discussions):
        pause = 1
        if args.extract_comments:
            all_comments = set()
    #makes sense to keep track of already processed discussions
            for discussion in tqdm(discussions): 
                try:
                    comments = get_comments_from_discussion_via_api(context, discussion)
                except odnoklassniki.api.OdnoklassnikiError as e:
                    if "NOT_FOUND" in str(e):
                        comments = set()
                    else:
                        print(e)
                        bp()
                        pass
                all_comments |= comments
                time.sleep(pause)
            return all_comments
    

    Ang akong paborito nga sayop mao ang:

    OdnoklassnikiError("Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: …)”)

    6) Sa katapusan, ang Selenium + API ingon ang labing makatarunganon nga kapilian.

  • Kinahanglan nga i-save ang estado ug i-restart ang sistema, pagdumala sa daghang mga sayup, lakip ang dili managsama nga pamatasan sa site - ug kini nga mga sayup lisud mahanduraw (gawas kung nagsulat ka sa mga parser nga propesyonal, siyempre).

Ang gibanabana nga oras sa kondisyon alang niini nga buluhaton mahimong 3-5 ka beses nga mas taas kaysa sa pagkolekta sa datos gikan sa Habr. Bisan pa sa kamatuoran nga sa kaso sa Habr gigamit namo ang usa ka frontal nga pamaagi sa pag-parse sa HTML, ug sa kaso sa OK makatrabaho kami sa API sa mga kritikal nga lugar.

kaplag

Bisan unsa pa ka daghan ang gikinahanglan sa pagbanabana sa mga deadline nga "on the spot" (kami nagplano karon!) sa usa ka dako nga data processing pipeline module, ang execution time halos dili posible nga mabanabana bisan sa qualitatively nga walay pag-analisar sa task parameters.

Sa usa ka gamay nga mas pilosopikal nga nota, ang abtik nga mga estratehiya sa pagtantiya maayo alang sa mga buluhaton sa engineering, apan ang mga problema nga mas eksperimento ug, sa usa ka diwa, "mamugnaon" ug eksplorasyon, i.e., dili kaayo matag-an, adunay mga kalisud, sama sa mga pananglitan sa susama nga mga hilisgutan , nga atong gihisgutan dinhi.

Siyempre, ang pagkolekta sa datos usa lamang ka pangunang pananglitan - kasagaran kini usa ka talagsaon nga yano ug teknikal nga dili komplikado nga buluhaton, ug ang yawa kanunay anaa sa mga detalye. Ug kini mao ang tukma sa niini nga buluhaton nga atong ipakita ang tibuok nga han-ay sa posible nga mga kapilian alang sa unsa ang mahimong sayop ug sa tukma kung unsa kadugay ang trabaho mahimo.

Kung imong tan-awon ang mga kinaiya sa buluhaton nga wala’y dugang nga mga eksperimento, ang Reddit ug OK parehas nga hitsura: adunay usa ka API, usa ka python wrapper, apan sa tinuud, ang kalainan dako. Sa paghukom sa kini nga mga parameter, ang mga pars ni Habr tan-awon nga labi ka komplikado kaysa OK - apan sa praktis kini sukwahi, ug kini gyud ang mahibal-an pinaagi sa paghimo sa yano nga mga eksperimento aron ma-analisar ang mga parameter sa problema.

Sa akong kasinatian, ang labing epektibo nga pamaagi mao ang halos pagbanabana sa oras nga imong gikinahanglan alang sa preliminary analysis mismo ug yano nga unang mga eksperimento, pagbasa sa dokumentasyon - kini magtugot kanimo sa paghatag sa usa ka tukma nga pagbanabana alang sa tibuok nga trabaho. Sa mga termino sa popular nga agile methodology, gihangyo ko ikaw nga maghimo usa ka tiket alang sa "pagbanabana sa mga parameter sa buluhaton", nga base niini makahatag ako usa ka pagsusi kung unsa ang mahimo sa sulod sa "sprint" ug maghatag usa ka mas tukma nga pagbanabana alang sa matag usa. buluhaton.

Busa, ang labing epektibo nga argumento ingon usa nga magpakita sa usa ka "dili teknikal" nga espesyalista kung pila ang oras ug mga kahinguhaan nga magkalainlain depende sa mga parameter nga wala pa masusi.

Unsa ang mahimong sayup sa Data Science? Pagkolekta sa datos

Source: www.habr.com

Idugang sa usa ka comment