Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
Ana m agwa gị site n'ahụmahụ onwe onye ihe bara uru ebe na mgbe. Ọ bụ nkọwa na tesis, ka o doo anya ihe na ebe ị nwere ike igwu n'ihu - mana ebe a enwere m ahụmịhe nke onwe naanị, ikekwe ihe niile dị iche maka gị.

Kedu ihe kpatara o ji dị mkpa ịmara ma nwee ike iji asụsụ ajụjụ? Na isi ya, Data Science nwere ọtụtụ ọrụ dị mkpa dị mkpa, na nke mbụ na nke kachasị mkpa (na-enweghị ya, n'ezie ọ dịghị ihe ga-arụ ọrụ!) bụ ịnweta ma ọ bụ wepụ data. Ọtụtụ mgbe, data na-anọdụ ala n'ebe ụfọdụ n'ụdị ma ọ dị mkpa ka e "weghachite" n'ebe ahụ. 

Asụsụ ajụjụ na-enye gị ohere iwepu data a! Ma taa, m ga-agwa gị gbasara asụsụ ajụjụ ndị ahụ bara uru nye m, m ga-agwa gị ma gosi gị ebe na otu kpọmkwem - ihe mere o ji dị mkpa ka ịmụ ihe.

A ga-enwe isi ngọngọ atọ nke ụdị ajụjụ data, nke anyị ga-atụle n'isiokwu a:

  • Asụsụ ajụjụ “Standard” bụ ihe a na-aghọtakarị mgbe a na-ekwu maka asụsụ ajụjụ, dị ka algebra mmekọrịta ma ọ bụ SQL.
  • Asụsụ ajụjụ scripting: ọmụmaatụ, Python ihe pandas, numpy ma ọ bụ shei scripting.
  • Asụsụ ajụjụ maka eserese ọmụma na ọdụ data eserese.

Ihe niile edere ebe a bụ naanị ahụmahụ onwe onye, ​​​​ihe bara uru, na nkọwa nke ọnọdụ na "ihe mere ọ dị mkpa" - onye ọ bụla nwere ike ịnwale otú ọnọdụ ndị yiri ya nwere ike isi bịa n'ụzọ gị ma gbalịa ịkwadebe maka ha tupu oge eruo site n'ịghọta asụsụ ndị a tupu ị tinye akwụkwọ (ngwa ngwa) na oru ngo ma ọ bụ ọbụna nweta ọrụ ebe achọrọ ha.

Asụsụ ajụjụ "Standard".

Asụsụ ajụjụ ọkọlọtọ bụ kpọmkwem n'echiche nke anyị na-echekarị banyere ha mgbe anyị na-ekwu maka ajụjụ.

Algebra mmekọrịta

Gịnị kpatara algebra mmekọrita ji chọọ taa? Iji nwee nghọta nke ọma ihe kpatara eji hazie asụsụ ajụjụ ajụjụ n'otu ụzọ ma jiri ha mara nke ọma, ịkwesịrị ịghọta isi ihe na-akpata ha.

Kedu ihe bụ njikọta algebra?

Nkọwa nke iwu bụ nke a: algebra mmekọrịta bụ usoro mechiri emechi nke arụ ọrụ na mmekọrịta na ụdị data mmekọrịta. Iji tinye ya ntakịrị karịa mmadụ, nke a bụ usoro arụ ọrụ na tebụl dị otú ahụ nke na-esi na ya pụta mgbe niile.

Hụ ọrụ mmekọrịta niile na nke a isiokwu sitere na Habr - ebe a anyị na-akọwa ihe mere ị ga-eji mara na ebe ọ na-abịa na aka.

Ntak-a?

Ịmalite ịghọta ihe asụsụ ajuju pụtara na ihe arụrụ arụ na-akpata okwu n'asụsụ ajụjụ a kapịrị ọnụ na-enyekarị nghọta miri emi nke ihe na-arụ ọrụ n'asụsụ ajụjụ yana otu esi eme ya.

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
E sitere na nke a akụkọ. Ihe atụ nke ọrụ: sonye, ​​nke na-ejikọta tebụl.

Ngwa maka ọmụmụ ihe:

Ezi nkuzi mmalite sitere na Stanford. N'ozuzu, enwere ọtụtụ ihe gbasara algebra na tiori - Coursera, Udacity. Enwekwara nnukwu ego nke ihe n'ịntanetị, gụnyere nke ọma agụmakwụkwọ ọmụmụ. Ndụmọdụ nkeonwe m: ịkwesịrị ịghọta algebra mmekọrịta nke ọma - nke a bụ ntọala nke isi.

SQL

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
E sitere na nke a edemede.

SQL bụ n'ezie mmejuputa algebra mmekọrita - ya na nnukwu caveat, SQL bụ nkwupụta! Ya bụ, mgbe ị na-ede ajụjụ n'asụsụ nke algebra relational, ị na-ekwu n'ezie ka esi gbakọọ - mana na SQL ị na-akọwapụta ihe ịchọrọ iwepụ, mgbe ahụ DBMS ewepụtala okwu (dị irè) n'asụsụ nke algebra (ha ha). nhatara ka anyi mara Usoro iwu Codd).

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
E sitere na nke a edemede.

Ntak-a?

Mmekọrịta DBMSs: Oracle, Postgres, SQL Server, wdg ka fọrọ nke nta ka ọ bụrụ ebe niile na enwere ohere dị elu na ị ga-emekọrịta ihe na ha, nke pụtara na ị ga-agụ SQL (nke nwere ike) ma ọ bụ dee ya ( O yighịkwa).

Ihe ị ga-agụ na ịmụ

Dị ka otu njikọ dị n'elu (banyere algebra mmekọrịta), enwere nnukwu ihe onwunwe, dịka ọmụmaatụ, nke a.

Site n'ụzọ, gịnị bụ NoSQL?

"Ọ bara uru ikwusi ike ọzọ na okwu ahụ bụ "NoSQL" nwere isi mmalite na enweghị nkọwa zuru oke ma ọ bụ ụlọ ọrụ sayensị n'azụ ya." Dabara otu isiokwu na Habr.

N'ezie, ndị mmadụ ghọtara na ụdị mmekọrịta zuru oke adịghị mkpa iji dozie ọtụtụ nsogbu, karịsịa maka ndị ebe, dịka ọmụmaatụ, ịrụ ọrụ dị oke egwu na ụfọdụ ajụjụ dị mfe na nchịkọta na-achịkwa - ebe ọ dị mkpa iji gbakọọ metrics ngwa ngwa wee degara ha akwụkwọ ozi. nchekwa data, na ọtụtụ atụmatụ na-mmekọrịta tụgharịrị na-abụghị nanị na-adịghị mkpa, ma na-emerụ - gịnị mere normalize ihe ma ọ bụrụ na ọ ga-emebi ihe kasị mkpa anyị (maka ụfọdụ kpọmkwem ọrụ) - arụpụtaghị ihe?

Ọzọkwa, a na-achọkarị schemas na-agbanwe agbanwe kama ịhazi atụmatụ mgbakọ na mwepụ nke usoro mmekọrịta oge gboo - nke a na-eme ka mmepe ngwa dị mfe mgbe ọ dị oke mkpa itinye sistemu ahụ wee malite ịrụ ọrụ ngwa ngwa, na-ahazi nsonaazụ - ma ọ bụ atụmatụ na ụdị data echekwara. adịghị mkpa otú ahụ.

Dịka ọmụmaatụ, anyị na-emepụta usoro ọkachamara ma chọọ ịchekwa ozi na ngalaba akọwapụtara yana ụfọdụ ozi meta - anyị nwere ike ọ gaghị ama ubi niile ma chekwaa JSON maka ndekọ ọ bụla - nke a na-enye anyị ọnọdụ mgbanwe maka ịgbasa data ahụ. ihe nlereanya na ngwa ngwa iterating - yabụ na nke a, NoSQL ga-akacha mma ma nwee ike ịgụ ya. Ntinye ihe atụ (site na otu n'ime ọrụ m ebe NoSQL ziri ezi ebe achọrọ ya).

{"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}

Ị nwere ike ịgụkwu ebe a maka NoSQL.

Kedu ihe ị ga-amụ?

N'ebe a, kama, naanị ị ga-enyocha ọrụ gị nke ọma, ụdị akụrụngwa o nwere yana sistemụ NoSQL dị nke dabara na nkọwa a - wee malite ịmụ usoro a.

Asụsụ Ajụjụ Ederede

Na mbụ, ọ dị ka kedu ihe Python nwere jikọrọ ya na ya n'ozuzu - ọ bụ asụsụ mmemme, ọ bụghị maka ajụjụ ma ọlị.

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

  • Pandas bụ n'ezie mma Switzerland Army nke Data Science; nnukwu mgbanwe data, nchịkọta, wdg na-eme na ya.
  • Numpy - ngụkọta vector, matrices na linear algebra ebe ahụ.
  • Scipy - enwere ọtụtụ mgbakọ na mwepụ na ngwugwu a, ọkachasị stats.
  • Jupyter lab - ọtụtụ nyocha data nyocha dabara nke ọma na laptọọpụ - bara uru ịmara.
  • Arịrịọ - arụ ọrụ na netwọkụ.
  • Pyspark bụ onye ama ama n'etiti ndị injinia data, o yikarịrị ka ị ga-emekọrịta ihe na nke a ma ọ bụ Spark, naanị n'ihi ewu ewu ha.
  • * Selenium - bara uru nke ukwuu maka ịnakọta data sitere na saịtị na akụrụngwa, mgbe ụfọdụ ọ nweghị ụzọ ọzọ iji nweta data ahụ.

Ndụmọdụ m bụ isi: mụta Python!

Pandas

Ka anyị were koodu a dịka ọmụmaatụ:

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'}))

N'ezie, anyị na-ahụ na koodu ahụ dabara na ụkpụrụ SQL kpochapụrụ.

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

Mana akụkụ dị mkpa bụ na koodu a bụ akụkụ nke edemede na pipeline; n'ezie, anyị na-etinye ajụjụ n'ime pipeline Python. N'ọnọdụ a, asụsụ ajụjụ na-abịakwute anyị site na ụlọ akwụkwọ dị ka Pandas ma ọ bụ pySpark.

N'ozuzu, na pySpark anyị na-ahụ ụdị mgbanwe data yiri nke a site na asụsụ ajụjụ n'ime mmụọ nke:

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

Ebe na ihe ị ga-agụ

Na Python n'onwe ya n'ozuzu nsogbu adịghị chọta ihe ị ga-amụ. Enwere ọtụtụ nkuzi n'ịntanetị pandas, pySpark na ọmụmụ na Ọkụ (nakwa n'onwe ya DS). N'ozuzu, ọdịnaya ebe a dị mma maka ịgagharị, ma ọ bụrụ na m ga-ahọrọ otu ngwugwu ka m lekwasị anya na ya, ọ ga-abụ pandas, n'ezie. Banyere nchikota nke DS+Python ihe kwa ukwuu.

Shell dị ka asụsụ ajụjụ

Ọrụ nhazi na nyocha data ole na ole m rụworo ọrụ bụ, n'ezie, scripts shei na-akpọ koodu na Python, Java, na shei na-enye onwe ha iwu. Ya mere, n'ozuzu, ị nwere ike ịtụle pipeline na bash / zsh / wdg dị ka ụfọdụ ụdị ajụjụ dị elu (ị nwere ike, n'ezie, stof loops na ebe ahụ, ma nke a abụghị ụdị maka koodu DS na asụsụ shells), ka anyị nye. ihe atụ dị mfe - Achọrọ m ịme maapụ QID nke wikidata na njikọ zuru ezu na Russian na English wiki, maka nke a, edere m arịrịọ dị mfe site na iwu na bash na maka mmepụta m dere ederede dị mfe na Python, nke m dere. tinye ọnụ dị ka nke a:

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

ebe

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

Nke a bụ, n'ezie, pipeline dum mepụtara maapụ achọrọ; dị ka anyị na-ahụ, ihe niile na-arụ ọrụ na iyi iyi:

  • pv filepath - na-enye ogwe ọganihu dabere na nha faịlụ wee bufee ọdịnaya ya gaa n'ihu
  • unpigz -c gụọ akụkụ nke ebe nchekwa ma nye ya jq
  • jq ya na igodo - iyi weputara nsonaazụ ozugbo wee nyefee ya na postprocessor (dịka ọmụmaatụ nke mbụ) na Python.
  • N'ime, postprocessor bụ igwe steeti dị mfe nke na-ahazi mmepụta ya 

Na mkpokọta, pipeline dị mgbagwoju anya na-arụ ọrụ na ọnọdụ eruba na nnukwu data (0.5TB), na-enweghị ihe onwunwe dị mkpa ma mee ya site na pipeline dị mfe na ngwaọrụ abụọ.

Ndụmọdụ ọzọ dị mkpa: nwee ike ịrụ ọrụ nke ọma na nke ọma na njedebe wee dee bash/zsh/etc.

Ebee ka ọ ga-aba uru? Ee, ihe fọrọ nke nta ka ọ bụrụ ebe niile - ọzọ, enwere ọtụtụ ihe ị ga-amụ na ịntanetị. Karịsịa, ebe a nke a akụkọ m gara aga.

R scripting

Ọzọ, onye na-agụ nwere ike tie mkpu - nke ọma, nke a bụ asụsụ mmemme dum! Na n'ezie, ọ ga-abụ eziokwu. Agbanyeghị, m na-ezutekarị R n'ụdị ọnọdụ ahụ nke na, n'ezie, ọ dị ka asụsụ ajụjụ.

R bụ gburugburu mgbakọ na mwepụ ọnụ ọgụgụ na asụsụ maka mgbakọ na mwepụ na ịhụ anya (dị ka ihe a).

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
were site n'ebe a. Site n'ụzọ, ana m akwado ya, ihe dị mma.

Kedu ihe kpatara onye ọkà mmụta sayensị data kwesịrị ịma R? Opekempe, n'ihi na e nwere nnukwu oyi akwa nke ndị na-abụghị IT na-enyocha data na R. Ahụrụ m ya n'ebe ndị a:

  • Ngalaba ọgwụ.
  • Ndị ọkà mmụta ihe ndị dị ndụ.
  • Ngalaba ego.
  • Ndị mmadụ nwere agụmakwụkwọ mgbakọ na mwepụ bụ ndị na-ahụ maka stats.
  • Ụdị ọnụ ọgụgụ pụrụ iche na ụdị mmụta igwe (nke a na-enwekarị ike ịhụ naanị na ụdị onye ode akwụkwọ dị ka ngwugwu R).

Gịnị kpatara na ọ bụ n'ezie asụsụ ajụjụ? N'ụdị nke a na-ahụkarị ya, ọ bụ n'ezie arịrịọ ka ịmepụta ihe nlereanya, gụnyere ịgụ data na idozi ajụjụ (ihe nlereanya), yana iji anya nke uche data na ngwugwu dị ka ggplot2 - nke a bụkwa ụdị edemede ajụjụ. .

Ajụjụ atụ maka ịhụ anya

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

N'ozuzu, ọtụtụ echiche sitere na R abanyela na ngwugwu Python dị ka pandas, numpy ma ọ bụ scipy, dị ka dataframes na vectorization data - yabụ n'ozuzu ọtụtụ ihe na R ga-adị gị ka ị maara nke ọma.

Enwere ọtụtụ ebe ị ga-amụ, dịka ọmụmaatụ, nke a.

Eserese ihe ọmụma

N'ebe a, enwere m ahụmịhe pụrụ iche, n'ihi na m na-arụkarị ọrụ na eserese ihe ọmụma na asụsụ ajụjụ maka eserese. Ya mere, ka anyị leba anya na nkenke, n'ihi na akụkụ a dị ntakịrị karịa.

N'ime ọdụ data mmekọrịta oge gboo, anyị nwere atụmatụ edoziri, mana ebe a, atụmatụ a na-agbanwe agbanwe, amụma ọ bụla bụ “kọlụm” na ọbụna karịa.

Ka e were ya na ị na-eṅomi mmadụ ma chọọ ịkọwa isi ihe, dịka ọmụmaatụ, ka anyị were otu onye aha ya bụ Douglas Adams were nkọwa a dịka ntọala.

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
www.wikidata.org/wiki/Q42

Ọ bụrụ na anyị ejiri nchekwa data mmekọrịta, anyị ga-emepụta nnukwu tebụl ma ọ bụ tebụl nwere ọnụ ọgụgụ buru ibu nke ogidi, ọtụtụ n'ime ha ga-abụ NULL ma ọ bụ jupụta na ụfọdụ uru ụgha, dịka ọmụmaatụ, ọ gaghị ekwe omume na ọtụtụ n'ime anyị nwere. ntinye n'ọbá akwụkwọ mba Korea - n'ezie, anyị nwere ike itinye ha na tebụl dị iche iche, mana nke a ga-emecha bụrụ mgbalị iji gosipụta sekit ezi uche dị na ya na predicates site na iji otu mmekọrịta.

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
Yabụ were were na echekwara data niile dị ka eserese ma ọ bụ dị ka ọnụọgụ abụọ na okwu boolean na-enweghị isi.

Ebee ka ị nwere ike izute nke a? Nke mbụ, na-arụ ọrụ data wiki, yana na ọdụ data eserese ọ bụla ma ọ bụ data ejikọrọ.

Ndị a bụ asụsụ ajụjụ ndị m jirila ma rụọ ọrụ.

SPARQL

Wiki:
SPARQL (recursive acronym si Eng. Protocol SPARQL na asụsụ ajụjụ RDF) - asụsụ ajụjụ data, nke ihe nlereanya nọchiri anya ya R.F.D.Na protocol iji nyefee arịrịọ ndị a ma zaghachi ha. SPARQL bụ nkwanye W3C Consortium na otu n'ime teknụzụ semantic webụ.

Mana n'eziokwu, ọ bụ asụsụ a na-ajụ ajụjụ maka ezi uche na-adịghị mma na ọnụọgụ abụọ. Naanị ị na-akọwapụta ihe edobere na okwu Boolean yana ihe na-adịghị (dị mfe).

Ihe ndabere RDF (Resource Description Framework) n'onwe ya, nke emebere ajuju SPARQL, bụ okpukpu atọ. object, predicate, subject - na ajụjụ na-ahọrọ atọ achọrọ dị ka mmachi a kapịrị ọnụ na mmụọ: chọta X nke ahụ p_55 (X, q_33) bụ eziokwu - ebe, n'ezie, p_55 bụ ụdị mmekọrịta na ID 55, na q_33 bụ ihe. ihe nwere ID 33 (ebe a na akụkọ dum, na-ahapụkwa ụdị nkọwa niile).

Ọmụmaatụ nke ngosi data:

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data
Foto na ihe atụ nwere obodo ebe a site n'ebe a.

Ihe Nlereanya Ajụjụ bụ isi

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

N'ezie, anyị chọrọ ịchọta uru nke ?country variable dị otú ahụ maka predicate
otu_nke, ọ bụ eziokwu na onye otu_nke(?mba,q458) na q458 bụ ID nke European Union.

Ọmụmaatụ nke ezigbo ajụjụ SPARQL n'ime injin Python:

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

Dịka, m ga-agụrịrị SPARQL kama ide ya - n'ọnọdụ ahụ, ọ ga-abụ nka bara uru ịghọta asụsụ ahụ ọbụlagodi na ọkwa dị mkpa iji ghọta kpọmkwem ka esi enweta data. 

Enwere ọtụtụ ihe ị ga-amụ n'ịntanetị: dịka ọmụmaatụ, ebe a nke a и nke a. M na-emekarị google ụdị na ihe atụ kpọmkwem na nke ahụ ezuola maka ugbu a.

Asụsụ ajụjụ ezi uche dị na ya

Ị nwere ike ịgụkwu gbasara isiokwu a na edemede m ebe a. Na ebe a, anyị ga-enyocha naanị nkenke ihe kpatara asụsụ ezi uche ji dị mma maka ịde ajụjụ. N'ụzọ bụ isi, RDF bụ naanị otu okwu ezi uche dị na ya nke ụdị p(X) na h(X,Y), na ajụjụ ezi uche nwere ụdị a:

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

N'ebe a, anyị na-ekwu maka ịmepụta mmepụta predicate ọhụrụ / 1 (/ 1 pụtara unary), ma ọ bụrụhaala na maka X ọ bụ eziokwu na obodo (X) - ya bụ, X bụ obodo yana onye òtù (X,"EU").

Ya bụ, na nke a, a na-ewepụta ma data na iwu n'otu ụzọ ahụ, nke na-enye anyị ohere ịmepụta nsogbu dị mfe na nke ọma.

Ebee ka ị zutere na ụlọ ọrụ?: a dum nnukwu oru ngo na a ụlọ ọrụ na-ede ajụjụ na ndị dị otú ahụ a asụsụ, nakwa dị ka na ugbu a oru ngo na isi nke usoro - ọ ga-adị ka nke a bụ kama osisi ihe, ma mgbe ụfọdụ ọ na-eme.

Ọmụmaatụ nke iberibe koodu n'asụsụ ezi uche na-ahazi wikidata:

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

Akụrụngwa: Aga m enye ebe a njikọ ole na ole maka asụsụ mmemme ọgbara ọhụrụ Azịza Set Programming - Ana m akwado ịmụ ya:

Ihe ndetu ndị ọkà mmụta sayensị data: Nlebanya ahaziri ahazi nke asụsụ ajụjụ data

isi: www.habr.com

Tinye a comment