Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
Ke u bolella ho tsoa phihlelong ea hau hore na ho ne ho le molemo hokae le neng. Ke kakaretso le thesis, e le hore ho hlake hore na u ka cheka eng le hore na u ka cheka ho ea pele - empa mona ke na le boiphihlelo bo ikhethileng ba botho, mohlomong ntho e ngoe le e ngoe e fapane ka ho felletseng bakeng sa hau.

Hobaneng ho le bohlokoa ho tseba le ho khona ho sebelisa lipuo tsa lipotso? Motheong oa eona, Data Science e na le mekhahlelo e 'maloa ea bohlokoa ea mosebetsi,' me ea pele le ea bohlokoa ka ho fetisisa (ntle le eona, ka sebele ha ho letho le tla sebetsa!) Ke ho fumana kapa ho ntša data. Hangata, data e lutse kae-kae ka mokhoa o itseng 'me e hloka ho "khutlisoa" ho tloha moo. 

Lipuo tsa lipotso li u lumella ho ntša data ena! 'Me kajeno ke tla u bolella ka lipuo tseo tsa lipotso tse bileng molemo ho' na 'me ke tla u bolella le ho u bontša hore na hantle-ntle ke hobane'ng ha ho hlokahala ho ithuta.

Ho tla ba le li-blocks tse tharo tsa mantlha tsa mefuta ea lipotso tsa data, tseo re tla li tšohla sehloohong sena:

  • Lipuo tsa "tloaelehileng" ke tsona tse utloisisoang hangata ha ho buuoa ka puo ea lipotso, joalo ka relational algebra kapa SQL.
  • Lipuo tsa potso ea mongolo: mohlala, Python things pandas, numpy kapa shell scripting.
  • Lipuo tsa lipotso bakeng sa li-graph tsa tsebo le li-database tsa graph.

Ntho e 'ngoe le e' ngoe e ngotsoeng mona ke phihlelo ea botho feela, se neng se le molemo, ka tlhaloso ea maemo le "hobaneng ho ne ho hlokahala" - e mong le e mong a ka leka hore na maemo a tšoanang a ka tla joang 'me a leke ho itokisetsa esale pele ka ho utloisisa lipuo tsena. Pele o tlameha ho etsa kopo (ka potlako) morerong kapa esita le ho fihla morerong moo o hlokahalang.

Lipuo tse "tloaelehileng" tsa ho botsa

Lipuo tse tloaelehileng tsa lipotso li nepahetse ka tsela ea hore hangata re nahana ka tsona ha re bua ka lipotso.

Algebra ea kamano

Ke hobane'ng ha algebra ea likamano e hlokahala kajeno? E le hore u be le kutloisiso e ntle ea hore na ke hobane'ng ha lipuo tsa lipotso li hlophisitsoe ka tsela e itseng 'me u li sebelise ka hloko, u lokela ho utloisisa motheo oa tsona.

Relational algebra ke eng?

Tlhaloso e hlophisitsoeng ke e latelang: algebra ea kamano ke mokhoa o koetsoeng oa ts'ebetso ea likamano ka mokhoa oa data oa kamano. Ho e hlalosa hanyenyane ka botho, ena ke tsamaiso ea ts'ebetso ea litafole e le hore sephetho se lule se le tafoleng.

Sheba lits'ebetso tsohle tsa likamano ho sena sengoloa se tsoang ho Habr - mona re hlalosa hore na ke hobaneng ha o hloka ho tseba le hore na e sebetsa hokae.

Hobane'ng?

Ho qala ho utloisisa hore na lipuo tsa lipotso li bua ka eng le hore na ke ts'ebetso efe e ka morao ho polelo ka lipuo tse itseng tse botsang hangata ho fana ka kutloisiso e tebileng ea se sebetsang ka lipuo tsa lipotso le hore na joang.

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
E nkiloeng ho tloha sena lingoliloeng. Mohlala oa ts'ebetso: kopanya, e kopanyang litafole.

Lisebelisuoa tsa ho ithuta:

Lithuto tse ntle tse tsoang Stanford. Ka kakaretso, ho na le lisebelisoa tse ngata mabapi le algebra ea kamano le khopolo - Coursera, Udacity. Hape ho na le lintho tse ngata tse fumanehang marang-rang, ho kenyelletsa le tse ntle lithuto tsa thuto. Keletso ea ka ea botho: o hloka ho utloisisa algebra ea kamano hantle - ena ke motheo oa metheo.

SQL

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
E nkiloeng ho tloha sena Lingoloa.

SQL ha e le hantle ke ts'ebetsong ea algebra ea kamano - ka tlhokomeliso ea bohlokoa, SQL ea phatlalatsa! Ke hore, ha u ngola potso ka puo ea algebra ea kamano, ha e le hantle u re ho bala - empa ka SQL u hlalosa seo u batlang ho se ntša, ebe DBMS e se e ntse e hlahisa lipolelo (tse sebetsang) ka puo ea algebra ea kamano (ea bona). ho lekana ho tsejoa ho rona e le Khopolo ea Codd).

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
E nkiloeng ho tloha sena Lingoloa.

Hobane'ng?

Relational DBMSs: Oracle, Postgres, SQL Server, joalo-joalo li ntse li le hohle 'me ho na le monyetla o moholo haholo oa hore u tla tlameha ho sebelisana le bona, ho bolelang hore u tla tlameha ho bala SQL (e leng ntho e ka etsahalang) kapa u e ngole ( ha ho na monyetla le).

Seo u lokelang ho se bala le ho ithuta

Ho ea ka lihokelo tse tšoanang tse kaholimo (mabapi le algebra ea kamano), ho na le lintho tse ngata tse makatsang, mohlala, sena.

Ha e le hantle, NoSQL ke eng?

"Ho bohlokoa ho hatisa hape hore lentsoe "NoSQL" le na le tšimoloho e iketsahallang feela 'me ha le na tlhaloso e amohelehang ka kakaretso kapa setsi sa saense ka mor'a lona. E tsamaellanang sehlooho ka Habr.

Ha e le hantle, batho ba ile ba hlokomela hore mohlala o feletseng oa kamano ha o hlokehe ho rarolla mathata a mangata, haholo-holo bakeng sa bao, ka mohlala, ts'ebetso e leng ea bohlokoa 'me lipotso tse ling tse bonolo tse nang le aggregation li laola - moo ho leng bohlokoa ho potlakela ho bala metrics le ho e ngolla polokelongtshedimosetso, le likarolo tse ngata ke kamano e ile ea e-ba eseng feela e sa hlokahaleng, empa hape e kotsi - ke hobane'ng ha ho tloaeleha ntho e itseng haeba e tla senya ntho ea bohlokoa ka ho fetisisa bakeng sa rona (bakeng sa mosebetsi o itseng) - tlhahiso?

Hape, li-schemas tse feto-fetohang hangata lia hlokahala sebakeng sa meralo e tsitsitseng ea lipalo ea mofuta oa khale oa kamano - mme sena se nolofatsa nts'etsopele ea ts'ebeliso ha ho le bohlokoa ho tsamaisa sistimi le ho qala ho sebetsa kapele, ho sebetsana le liphetho - kapa schema le mefuta ea data e bolokiloeng. ha li bohlokoa hakaalo.

Mohlala, re theha sistimi ea litsebi mme re batla ho boloka tlhaiso-leseling sebakeng se itseng hammoho le tlhaiso-leseling ea meta - mohlomong ha re tsebe likarolo tsohle mme ra boloka JSON bakeng sa rekoto ka 'ngoe - sena se re fa tikoloho e feto-fetohang bakeng sa ho holisa data. mohlala le ho pheta-pheta ka potlako - kahoo Tabeng ena, NoSQL e tla ba e ratoang le ho baloa haholoanyane. Mohlala oa ho kena (ho tsoa ho e 'ngoe ea merero ea ka moo NoSQL e neng e le teng moo e hlokahalang).

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

O ka bala ho feta mona mabapi le NoSQL.

Ho ithuta eng?

Mona, ho e-na le hoo, o hloka feela ho sekaseka mosebetsi oa hau ka botlalo, hore na o na le thepa efe le hore na ke lits'ebetso life tsa NoSQL tse fumanehang tse ka lumellanang le tlhaloso ena - ebe o qala ho ithuta sistimi ena.

Lipuo tsa Potso ea Mangolo

Qalong, ho bonahala eka Python e amana joang le eona ka kakaretso - ke puo ea lenaneo, eseng ka lipotso ho hang.

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

  • Pandas ha e le hantle ke thipa ea Sesole sa Switzerland sa Saense ea Boitsebiso; palo e kholo ea phetoho ea data, ho kopanya, joalo-joalo ho etsahala ho eona.
  • Numpy - lipalo tsa vector, matrices le linear algebra moo.
  • Scipy - ho na le lipalo tse ngata ka har'a sephutheloana sena, haholo-holo lipalo.
  • Jupyter lab - tlhahlobo e ngata ea tlhaiso-leseling e lumellana hantle le lilaptop - e bohlokoa ho tseba.
  • Likopo - ho sebetsa le marang-rang.
  • Pyspark e tumme haholo har'a baenjiniere ba data, mohlomong o tla tlameha ho sebelisana le sena kapa Spark, ka lebaka la botumo ba bona.
  • * Selenium - e bohlokoa haholo bakeng sa ho bokella lintlha ho tsoa libakeng le lisebelisoa, ka linako tse ling ha ho na mokhoa o mong oa ho fumana data.

Keletso ea ka ea mantlha: ithute Python!

pandas

Ha re nke mohlala oa khoutu e latelang:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

Ha e le hantle, rea bona hore khoutu e lumellana le mokhoa oa khale oa SQL.

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

Empa karolo ea bohlokoa ke hore khoutu ena ke karolo ea script le pipeline; ha e le hantle, re ntse re kenyelletsa lipotso ka har'a pipeline ea Python. Boemong bona, puo ea potso e tla ho rona ho tsoa lilaebraring tse kang Pandas kapa pySpark.

Ka kakaretso, ho pySpark re bona mofuta o tšoanang oa phetoho ea data ka puo ea lipotso ka moea oa:

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

Hoka balloa hokae le hore na u ka bala eng

Ho Python ka boeona ka kakaretso eseng bothata fumana lisebelisoa tsa ho ithuta. Ho na le palo e kholo ea lithupelo inthaneteng panda, pySpark le lithuto ho Spark ('me hape ka boeona DS). Ka kakaretso, litaba tse mona li ntle bakeng sa googling, 'me haeba ke ne ke tlameha ho khetha sephutheloana se le seng hore ke tsepamise maikutlo ho sona, e ka ba li-pandas, ehlile. Mabapi le motsoako oa lisebelisoa tsa DS + Python hape haholo.

Shell joalo ka puo ea ho botsa

Merero e mengata ea ts'ebetso le tlhahlobo ea data eo ke sebelitseng le eona, ha e le hantle, ke mangolo a khetla a bitsang khoutu ho Python, Java, le likhetla tse li laelang. Ka hona, ka kakaretso, o ka nka liphaephe ho bash/zsh/etc e le mofuta oa potso ea boemo bo holimo (u ka khona, ehlile, u ka kenya li-loops moo, empa sena ha se tloaelehe bakeng sa khoutu ea DS ka lipuo tsa likhetla), a re faneng ka tsona. mohlala o bonolo - ke ne ke hloka ho etsa 'mapa oa QID oa wikidata le lihokela tse felletseng ho li-wiki tsa Serussia le tsa Senyesemane, bakeng sa sena ke ngotse kopo e bonolo ho tsoa ho litaelo tsa bash le bakeng sa tlhahiso eo ke ngotseng script e bonolo ho Python, eo ke e ngotseng. kopanya ka tsela ena:

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

moo

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

Ha e le hantle, ena e ne e le phala eohle e entseng 'mapa o hlokahalang; joalo ka ha re bona, ntho e ngoe le e ngoe e ne e sebetsa ka mokhoa oa phallo:

  • pv filepath - e fana ka sebaka sa tsoelo-pele se ipapisitseng le boholo ba faele mme e fetisetsa litaba tsa eona ho ea pele
  • unpigz -c bala karolo ea polokelo ea litaba mme o e file jq
  • jq e nang le senotlolo - molapo hang-hang o ile oa hlahisa sephetho mme oa se fetisetsa ho postprocessor (e ts'oanang le mohlala oa pele) ho Python
  • ka hare, postprocessor e ne e le mochine o bonolo oa mmuso o neng o hlophisa tlhahiso 

Ka kakaretso, phaephe e rarahaneng e sebetsang ka mokhoa oa phallo ho data e kholo (0.5TB), ntle le lisebelisoa tsa bohlokoa mme e entsoe ka pipeline e bonolo le lisebelisoa tse 'maloa.

Keletso e 'ngoe ea bohlokoa: khona ho sebetsa hantle le ka katleho ho terminal le ho ngola bash/zsh/etc.

E tla ba molemo hokae? E, hoo e batlang e le hohle - hape, ho na le lintho tse ngata tse ngata tseo u ka ithutang tsona Inthaneteng. Haholo-holo, mona sena sehlooho sa ka se fetileng.

R ho ngola

Hape, 'mali a ka hooa - hantle, ena ke puo ea mananeo! Mme ehlile, o tla be a nepile. Leha ho le joalo, hangata ke ne ke kopana le R maemong a joalo hoo, ha e le hantle, e neng e tšoana haholo le puo ea lipotso.

R ke tikoloho ea lipalo-palo ea khomphutha le puo bakeng sa khomphutha e sa fetoheng le pono ea pono (ho latela sena).

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
nkeloa ho tloha mona. Ka tsela, kea e khothaletsa, thepa e ntle.

Hobaneng ha rasaense oa data a hloka ho tseba R? Bonyane, hobane ho na le lera le leholo la batho bao e seng ba IT ba sekasekang data ho R. Ke ile ka kopana le eona libakeng tse latelang:

  • Lefapha la meriana.
  • Litsebi tsa baeloji.
  • Lekala la lichelete.
  • Batho ba nang le thuto ea lipalo feela ba sebetsanang le lipalo.
  • Mefuta e ikhethileng ea lipalo-palo le mefuta ea ho ithuta ka mochini (eo hangata e ka fumanoang feela mofuteng oa sengoli joalo ka sephutheloana sa R).

Hobaneng e le puo ea ho botsa? Ka mokhoa oo e atisang ho fumanoa ka oona, ha e le hantle ke kopo ea ho etsa mohlala, ho kenyelletsa ho bala lintlha le ho lokisa li-parameter tsa lipotso (mohlala), hammoho le ho bona lintlha ka har'a liphutheloana tse kang ggplot2 - ena ke mokhoa oa ho ngola lipotso. .

Lipotso tsa mohlala bakeng sa pono

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

Ka kakaretso, mehopolo e mengata e tsoang ho R e falletse ho liphutheloana tsa python joalo ka pandas, numpy kapa scipy, joalo ka dataframes le data vectorization - kahoo ka kakaretso lintho tse ngata ho R li tla bonahala li tloaelehile ebile li le bonolo ho uena.

Ho na le mehloli e mengata ea ho ithuta, mohlala, sena.

Li-graph tsa tsebo

Mona ke na le boiphihlelo bo sa tloaelehang, hobane hangata ke tlameha ho sebetsa ka li-graph tsa tsebo le lipuo tsa lipotso bakeng sa lirafshoa. Ka hona, a re ke re hlahlobeng lintlha tsa motheo ka bokhutšoanyane, kaha karolo ena e batla e sa tloaeleha.

Ka har'a li-database tsa khale tsa kamano re na le schema e tsitsitseng, empa mona schema e fetoha, selelekela se seng le se seng ha e le hantle ke "kholomo" le ho feta.

Ak'u nahane u ne u etsa mohlala oa motho 'me u batla ho hlalosa lintho tsa bohlokoa, mohlala, ha re nke motho ea itseng, Douglas Adams, 'me re sebelise tlhaloso ena e le motheo.

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
www.wikidata.org/wiki/Q42

Haeba re ne re sebelisa database ea kamano, re ne re tla tlameha ho theha tafole e kholo kapa litafole tse nang le litšiea tse ngata, tseo boholo ba tsona li neng li tla ba NULL kapa li tlatsitsoe ka boleng bo bong bo sa feleng ba Bohata, mohlala, ha ho bonolo hore bongata ba rona re be le ho kena laebraring ea naha ea Korea - ehlile, re ka li beha litafoleng tse arohaneng, empa qetellong ena e ne e tla ba boiteko ba ho etsa mohlala oa potoloho e hlakileng e nang le li-predicate re sebelisa kamano e tsitsitseng.

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
Kahoo ak'u nahane hore data eohle e bolokiloe e le graph kapa e le lipolelo tsa binary le unary boolean.

U ka kopana le see hokae? Ntlha ea pele, ho sebetsa le data wiki, le ka datha efe kapa efe ea kerafo kapa data e hokahantsoeng.

Tse latelang ke lipuo tsa mantlha tsa lipotso tseo ke li sebelisitseng le ho sebetsa le tsona.

SPARQL

Wiki:
SPARQL (recursive acronym от Senyesemane SPARQL Protocol le RDF Potso Puo) - puo ea potso ea data, e emeloang ke mohlala RDF, hammoho le melaoana ho fetisa likopo tsena le ho li araba. SPARQL ke khothaletso W3C Consortium le e 'ngoe ea mahlale a morao-rao websaete ea semantic.

Empa ha e le hantle ke puo ea lipotso bakeng sa lipolelo tse utloahalang tsa unary le binary. U ntse u hlakisa hantle hore na ke eng e tsitsitseng polelong ea Boolean le e sa tsitsang (e nolofalitsoeng haholo).

Motheo oa RDF (Resource Description Framework) ka bo oona, oo lipotso tsa SPARQL li etsoang ho oona, ke makhetlo a mararo. object, predicate, subject - mme potso e khetha makhetlo a mararo a hlokahalang ho latela lithibelo tse boletsoeng moeeng: fumana X e le hore p_55(X, q_33) ke 'nete - moo, ehlile, p_55 ke kamano ea mofuta o itseng le ID 55, le q_33 ke ntho e nang le ID 33 (mona le pale eohle, hape e siea lintlha tsa mefuta eohle).

Mohlala oa tlhahiso ea data:

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha
Litšoantšo le mohlala le linaha mona ho tloha mona.

Mohlala oa Potso ea Motheo

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

Haele hantle, re batla ho fumana boleng ba "naha e feto-fetohang joalo ka leetsi
member_of, ke 'nete hore member_of(?country,q458) le q458 ke ID ea European Union.

Mohlala oa potso ea 'nete ea SPARQL ka har'a enjene ea python:

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

Ka tloaelo, ke ile ka tlameha ho bala SPARQL ho e-na le ho e ngola - boemong boo, e ka 'na ea e-ba tsebo e molemo ho utloisisa puo bonyane boemong ba motheo ho utloisisa hantle hore na data e fumanoa joang. 

Ho na le lintho tse ngata tseo u ka ithutang tsona inthaneteng: mohlala, mona sena и sena. Ke tloaetse meralo le mehlala e ikhethang ea google mme ho lekane hajoale.

Lipuo tse utloahalang tsa potso

U ka bala ho eketsehileng ka sehlooho sehloohong sa ka mona. 'Me mona, re tla hlahloba ka bokhutšoanyane feela hore na ke hobane'ng ha lipuo tse utloahalang li loketse ho ngola lipotso. Ha e le hantle, RDF ke sete sa lipolelo tse utloahalang tsa foromo p(X) le h(X,Y),' me potso e utloahalang e na le foromo e latelang:

output(X) :- country(X), member_of(X,“EU”).

Mona re bua ka ho theha tlhahiso e ncha ea predicate/1 (/1 e bolela unary), ha feela bakeng sa X e le 'nete hore naha(X) - ke hore, X ke naha hape ke setho_ea(X,"EU ").

Ke hore, tabeng ena, lintlha le melao li hlahisoa ka tsela e ts'oanang, e leng se re lumellang ho etsa mohlala oa mathata habonolo le hantle.

Le kopane kae indastering?: morero o moholo ka ho feletseng o nang le k'hamphani e ngolang lipotso ka puo e joalo, hammoho le morero oa hona joale o ka sehloohong oa tsamaiso - ho ka bonahala eka sena ke ntho e sa tloaelehang, empa ka linako tse ling e etsahala.

Mohlala oa sekhechana sa khoutu ka puo e utloahalang e sebetsanang le wikidata:

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

Lisebelisoa: Mona ke tla fana ka likhokahano tse 'maloa tsa puo ea sejoale-joale e utloahalang ea ho ngola Karabo Set Programming - Ke khothaletsa ho ithuta eona:

Lintlha tsa Scientist's Data: Tlhahlobo e Ikemetseng ea Lipuo tsa Potso ea Lintlha

Source: www.habr.com

Eketsa ka tlhaloso