Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Ez ji ezmûna kesane ji we re dibêjim ka çi li ku û kengê bikêr bû. Ew serpêhatî û tez e, da ku zelal bibe ka hûn dikarin çi û li ku bêtir bikolin - lê li vir ez bi taybetî ezmûna kesane ya subjektîf heye, dibe ku her tişt ji bo we bi tevahî cûda be.

Çima girîng e ku meriv zimanên pirsê zanibe û bikar bîne? Di bingehê xwe de, Zanistiya Daneyê çend qonaxên xebatê yên girîng hene, û ya yekem û ya herî girîng (bêyî wê, bê guman tiştek dê nexebite!) bidestxistin an derxistina daneyan e. Bi gelemperî, dane li cîhek bi rengekî rûniştî ye û pêdivî ye ku ji wir were "vegerandin". 

Zimanên pirsyariyê dihêlin hûn vê daneyê derxînin! Û îro ez ê li ser wan zimanên lêpirsînê yên ku ji min re bikêr bûne vebêjim û ez ê ji we re vebêjim û nîşanî we bidim ka li ku û çawa bi rastî - çima ji bo xwendinê hewce ye.

Dê sê blokên sereke yên cûreyên lêpirsîna daneyê hebin, ku em ê di vê gotarê de nîqaş bikin:

  • Zimanên lêpirsînê yên "Standard" ew in yên ku bi gelemperî dema ku li ser zimanek pirsê diaxivin tê fêm kirin, wek cebraya peywendîdar an SQL.
  • Nivîsandina zimanên pirsnameyê: Mînakî, Python tiştên panda, nivîsandina numpy an şêl.
  • Ji bo grafikên zanînê û databasên grafikan li zimanan bipirsin.

Her tiştê ku li vir hatî nivîsandin tenê serpêhatiyek kesane ye, ya ku bikêr bû, bi ravekirina rewşan û "çima hewce bû" - her kes dikare biceribîne ka rewşên bi vî rengî çawa dikarin werin pêşiya we û hewl bidin ku bi têgihîştina van zimanan pêşî ji wan re amade bikin. berî ku hûn neçar in ku serîlêdana (lezgîn) li ser projeyekê bikin an jî tewra bigihîjin projeyek ku ew hewce ne.

Zimanên pirsnameyê "Standard".

Zimanên pirsiyariya standard bi rastî di vê wateyê de ne ku em bi gelemperî li ser wan difikirin dema ku em li ser pirsan diaxivin.

Cebra pêwendîdar

Çima îro cebraya peywendîdar hewce ye? Ji bo ku hûn fêm bikin ka çima zimanên pirsyariyê bi rengek diyar têne saz kirin û wan bi zanebûn bikar tînin, hûn hewce ne ku bingeha bingehîn a wan fam bikin.

Cebraya pêwendîdar çi ye?

Pênaseya fermî wiha ye: Cebraya pêwendîdar pergalek girtî ya operasyonên li ser têkiliyan di modela daneya têkildar de ye. Ji bo ku ew hinekî bi mirovahî were gotin, ev pergalek operasyonên li ser maseyan e ku encam her gav tabloyek e.

Hemî operasyonên pêwendiyê di nav de bibînin ev gotara ji Habr - li vir em diyar dikin ka çima hûn hewce ne ku hûn zanibin û li ku derê ew bi kêr tê.

Çima?

Destpêka têgihîştina zimanên pirsiyariyê çi ne û çi operasyonên li pişt îfadeyên di zimanên lêpirsînê yên taybetî de ne, bi gelemperî têgihiştinek kûr dide ka di zimanên lêpirsînê de çi û çawa dixebite.

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Ji hatî girtin ev articles. Nimûneyek operasyonek: tevlî, ku tabloyan dike.

Materyalên ji bo lêkolînê:

Kursa destpêkê ya baş ji Stanford. Bi gelemperî, gelek materyalên li ser cebra û teoriya têkilî hene - Coursera, Udacity. Di heman demê de gelek materyalên serhêl jî hene, tevî baş kursên akademîk. Şîreta min a kesane: hûn hewce ne ku cebraya pêwendiyê pir baş fam bikin - ev bingeha bingehîn e.

SQL

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Ji hatî girtin ev gotar.

SQL bi bingehîn pêkanîna cebra pêwendiyê ye - bi hişyariyek girîng, SQL diyarker e! Ango, dema ku pirsek bi zimanê cebraya pêwendîdar dinivîsin, hûn bi rastî dibêjin ka meriv çawa hesab dike - lê bi SQL hûn diyar dikin ku hûn dixwazin çi derxînin, û dûv re DBMS jixwe bi zimanê cebraya pêwendîdar (wan) îfadeyên (bandor) çêdike. wekhevî ji me re tê zanîn Teorema Codd).

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Ji hatî girtin ev gotar.

Çima?

DBMS-yên Têkilî: Oracle, Postgres, SQL Server, hwd hîn jî hema hema li her derê ne û şansek pir zêde heye ku hûn bi wan re têkilî daynin, ev tê vê wateyê ku hûn ê yan neçar bimînin SQL bixwînin (ku pir muhtemel e) an jî wê binivîsin ( ne mimkûn e jî).

Çi bixwînin û bixwînin

Li gorî heman girêdanên li jor (li ser cebraya pêwendiyê), hejmareke bêbawer a materyal heye, mînakî, ev.

Bi awayê, NoSQL çi ye?

"Hêja ye ku careke din were tekez kirin ku têgîna "NoSQL" xwedan bingehek bêkêmasî ye û li pişt wê pênase an saziyek zanistî ya bi gelemperî pejirandî tune ye." Gorî gotara li ser Habr.

Di rastiyê de, mirovan fêm kir ku ji bo çareserkirina gelek pirsgirêkan modelek têkiliyek bêkêmasî ne hewce ye, nemaze ji bo yên ku, mînakî, performans krîtîk e û hin pirsên hêsan ên bi kombûnê serdest in - li ku derê girîng e ku meriv zû metrîkan bihejmêre û wan binivîsîne. databas, û piraniya taybetmendiyan pêwendiyê ne tenê ne hewce ne, lê di heman demê de zirardar in - çima tiştek normal bikin ger ew ê ji me re ya herî girîng (ji bo hin peywirek taybetî) xirab bike - hilberandin?

Di heman demê de, şemayên maqûl bi gelemperî li şûna şemayên matematîkî yên sabît ên modela pêwendiya klasîk hewce ne - û ev yek pir pêşkeftina serîlêdanê hêsan dike dema ku pir girîng e ku pergalê bicîh bikin û zû dest bi xebatê bikin, hilberandina encaman - an jî şema û celebên daneyên hilanîn. ne ewqas girîng in.

Mînakî, em pergalek pispor diafirînin û dixwazin agahdariya li ser domanek taybetî digel hin agahdariya meta hilînin - dibe ku em hemî qadan nizanin û bi tenê JSON ji bo her tomarê hilînin - ev ji bo berfirehkirina daneyan hawîrdorek pir maqûl dide me. model û zû dubare dibe - ji ber vê yekê Di vê rewşê de, NoSQL dê hê bijartir û bêtir xwendin be. Têketina Mînak (ji yek ji projeyên min ku NoSQL li cihê ku hewce bû rast bû).

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

Hûn dikarin bêtir bixwînin vir li ser NoSQL.

Çi bixwînin?

Li vir, ji bilî vê, hûn tenê hewce ne ku peywira xwe bi tevahî analîz bikin, ka kîjan taybetmendiyên wê hene û kîjan pergalên NoSQL hene ku bi vê ravekirinê re têkildar in - û dûv re dest bi xwendina vê pergalê bikin.

Nivîsandina Zimanên Lêpirsînê

Di destpêkê de, wusa dixuye, ku Python bi gelemperî bi wê re çi heye - ew zimanek bernamekirinê ye, û ne li ser pirsan e.

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

  • Pandas bi rastî kêrê Artêşa Swîsreyê ya Zanistiya Daneyê ye; jimarek mezin a veguherîna daneyê, berhevkirin, hwd tê de çêdibe.
  • Numpy - hesabên vektorî, matrices û cebraya xêzkirî li wir.
  • Scipy - di vê pakêtê de, nemaze statîstîk, gelek matematîkî hene.
  • Laboratoriya Jupyter - gelek analîzên daneya keşfê baş di laptopan de cih digirin - kêrhatî ye ku hûn zanibin.
  • Daxwaz - bi torê re dixebitin.
  • Pyspark di nav endezyarên daneyê de pir populer e, bi îhtîmalek mezin hûn neçar in ku bi vê an Spark re têkilî daynin, tenê ji ber populerbûna wan.
  • * Selenium - ji bo berhevkirina daneyan ji malper û çavkaniyan pir bikêrhatî ye, carinan bi hêsanî rêyek din tune ku meriv daneyan bigire.

Şîreta min a sereke: Python fêr bibin!

pandas

Ka em koda jêrîn wekî nimûne bigirin:

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

Di bingeh de, em dibînin ku kod di nav modela SQL ya klasîk de cih digire.

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

Lê ya girîng ev e ku ev kod beşek ji nivîsar û boriyê ye; Bi rastî, em pirsan di nav lûleya Python de vedihewînin. Di vê rewşê de, zimanê pirsê ji pirtûkxaneyên wekî Pandas an pySpark tê.

Bi gelemperî, di pySpark de em celebek wekhev a veguherîna daneyê bi riya zimanek pirsê di ruhê de dibînin:

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

Li ku û çi bixwînin

Bi gelemperî li ser Python bixwe ne pirsgirêk e materyalên xwendinê bibînin. Li serhêl hejmareke mezin a dersan hene pandas, pySpark û kursên li ser spark (û bi xwe jî DS). Bi tevayî, naverok li vir ji bo googlêkirinê pir xweş e, û ger min neçar ma ku pakêtek ku li ser bisekinim hilbijêrin, bê guman ew ê panda bin. Di derbarê berhevoka materyalên DS + Python de jî pir zêde.

Shell wekî zimanê pirsê

Pir çend projeyên hilberandin û analîzkirina daneyê ku min pê re xebitî, bi rastî, skrîptên şêlê ne ku li Python, Java kodê bang dikin, û şêl bixwe ferman dike. Ji ber vê yekê, bi gelemperî, hûn dikarin lûleyên di bash/zsh/htd de wekî cûreyek lêpirsînek asta bilind bihesibînin (hûn dikarin, bê guman, li wir lûfên tiştan bişopînin, lê ev ji bo koda DS-ê di zimanên şêlê de ne tîpîk e), werin em bidin. mînakek hêsan - Min hewce kir ku nexşeyek QID ya wikidata û lînkên tije yên wîkîyên rûsî û îngilîzî bikim, ji bo vê yekê min daxwazek hêsan ji fermanên di bash de nivîsand û ji bo encamnameyê min nivîsek hêsan di Python de nivîsand, ku min wiha li hev kom bikin:

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

ko

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

Ev, bi rastî, tevahiya boriyê bû ku nexşeya pêdivî çêkir; wekî ku em dibînin, her tişt di moda tîrêjê de xebitî:

  • Rêya pelê pv - li gorî mezinahiya pelê barek pêşkeftinê dide û naveroka wê pê ve derbas dike
  • unpigz -c beşek ji arşîvê xwend û da jq
  • jq bi key - stream di cih de encam hilberand û ew ji postprocessor re (eynî wekî mînaka yekem) di Python de derbas kir.
  • navxweyî, postprocessor makîneyeke dewletê sade ku encam formatkirin bû 

Bi tevahî, boriyek tevlihev ku di moda herikînê de li ser daneyên mezin (0.5TB), bêyî çavkaniyên girîng dixebite û ji boriyek hêsan û çend amûran hatî çêkirin.

Serişteyek din a girîng: karibin di termînalê de baş û bi bandor bixebitin û bash/zsh/hwd binivîsin.

Li ku derê dê bikêr be? Erê, hema hema li her derê - dîsa, GELEK materyal hene ku li ser Înternetê bixwînin. Bi taybetî, li vir ev gotara min a berê.

R scripting

Dîsa, xwendevan dikare biqêre - baş e, ev zimanek bernamenûsek tevahî ye! Û bê guman, ew ê rast be. Lêbelê, ez bi gelemperî di çarçoveyek wusa de rastî R-yê hatim ku, bi rastî, ew pir dişibihe zimanek pirsê.

R jîngeh û zimanek hesabkirina îstatîstîkî ye ji bo hesabkirin û dîtina statîk (li gorî ev).

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
girtin ji vir. Bi awayê, ez wê pêşniyar dikim, materyalek baş e.

Çima zanyarek daneyê pêdivî ye ku R bizane? Bi kêmanî, ji ber ku qatek mezin a mirovên ne-IT hene ku daneyan di R de analîz dikin. Ez li cîhên jêrîn rast hatim:

  • sektora derman.
  • Biyologs.
  • Sektora darayî.
  • Kesên xwedan perwerdehiyek matematîkî ya ku bi statîstîkan re mijûl dibin.
  • Modelên statîstîkî yên pispor û modelên fêrbûna makîneyê (yên ku bi gelemperî tenê di guhertoya nivîskarê de wekî pakêtek R têne dîtin).

Çima ew bi rastî zimanek pirsê ye? Di forma ku ew pir caran tê dîtin, ew bi rastî daxwazek e ku meriv modelek biafirîne, tevî xwendina daneyê û rastkirina parametreyên pirsê (model), û her weha dîtina daneyan di pakêtên wekî ggplot2 de - ev jî celebek nivîsandina pirsan e. .

Pirsên nimûne ji bo dîtinê

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

Bi gelemperî, gelek ramanên ji R-ê koçî pakêtên python-ê yên wekî panda, numpy an scipy, mîna dataframes û vektorkirina daneyê - ji ber vê yekê bi gelemperî gelek tişt di R-ê de dê ji we re nas û rehet xuya bikin.

Gelek çavkaniyên lêkolînê hene, wek nimûne, ev.

Grafikên zanînê

Li vir ez xwedan ezmûnek piçûkek ne asayî ye, ji ber ku ez pir caran neçarim ku bi grafikên zanînê û zimanên pirsiyarê ji bo grafikan re bixebitim. Ji ber vê yekê, em bi kurtasî li ser bingehên bingehîn biçin, ji ber ku ev beş hinekî biyanîtir e.

Di databasên pêwendiya klasîk de me şemayek sabît heye, lê li vir şema maqûl e, her pêşdar bi rastî "stûnek" e û hêj bêtir.

Bifikirin ku we mirovek model dikir û dixwest ku hûn tiştên sereke diyar bikin, mînakî, werin em kesek taybetî, Douglas Adams, bigirin û vê ravekirinê wekî bingeh bikar bînin.

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
www.wikidata.org/wiki/Q42

Ger me databasek pêwendiyê bikar bîne, pêdivî ye ku em tabloyek an tabloyek mezin bi hejmareke mezin ji stûnan biafirînin, ku piraniya wan dê NULL bin an bi hin nirxek Derewîn a xwerû dagirtî bin, mînakî, ne mimkûn e ku gelek ji me xwediyê stûnek bin. ketina pirtûkxaneya neteweyî ya Koreyî - bê guman, em dikarin wan di tabloyên cihêreng de bixin, lê ev di dawiyê de dê bibe hewldanek ji bo modela çerxek mentiqî ya maqûl bi pêşdarazên ku bi karanîna têkiliyek sabit bikar tîne.

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Ji ber vê yekê bifikire ku hemî dane wekî grafiyek an wekî îfadeyên boolean ên binar û yekane têne hilanîn.

Hûn dikarin li ku derê vê yekê jî bibînin? Pêşîn, bi kar data wiki, û bi her databasên grafî an daneyên girêdayî.

Li jêr zimanên sereke yên pirsê hene ku min bi kar aniye û pê re xebitiye.

SPARQL

Wiki:
SPARQL (kurteya vegerî ji Eng. Protokola SPARQL û Zimanê Pirsa RDF) - zimanê pirsa daneyê, ji hêla modelê ve tê nîşandan RDFû herweha protokol van daxwazan ragihînin û bersiva wan bidin. SPARQL pêşniyarek e W3C Consortium û yek ji teknolojiyên tevna semantîk.

Lê di rastiyê de ew zimanek pirsiyariyê ye ji bo pêşgotinên mentiqî yên yekalî û binar. Hûn tenê bi şertê diyar dikin ka di bêjeyek Boolean de çi rast e û çi ne (pir hêsankirî).

Bingeha RDF (Çarçoveya Danasîna Çavkaniyê) bixwe, ku lêpirsînên SPARQL li ser têne darve kirin, sêqat e. object, predicate, subject - û lêpirsîn li gorî sînorkirinên diyarkirî yên di ruh de sêqatên pêwîst hildibijêre: X-yek wisa bibînin ku p_55(X, q_33) rast e - li wir, bê guman, p_55 cûreyek têkiliyek bi ID 55 re ye, û q_33 an tişta bi ID 33 (li vir û tevahiya çîrokê, dîsa her cûre hûrgulî ji holê radike).

Mînaka pêşkêşkirina daneyan:

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê
Wêne û nimûne bi welatan re li vir ji vir.

Mînaka Pirsa Bingehîn

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

Di rastiyê de, em dixwazin nirxa guherbara ?welatê wisa bibînin ku ji bo pêşdarazê
endam_of, rast e endam_of(?welat,q458) û q458 nasnameya Yekîtiya Ewropayê ye.

Mînakek pirsek rastîn a SPARQL di hundurê motora python de:

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

Bi gelemperî, ez neçar bûm ku SPARQL bixwînim ne ku wê binivîsim - di wê rewşê de, dibe ku jêhatîbûnek kêrhatî be ku meriv bi kêmanî di astek bingehîn de ziman fam bike da ku bi rastî fam bike ka dane çawa têne wergirtin. 

Gelek materyal hene ku hûn serhêl bixwînin: Mînakî, li vir ev и ev. Ez bi gelemperî sêwiran û nimûneyên taybetî google dikim û ew ji bo nuha bes e.

Zimanên pirsiyariya mantiqî

Hûn dikarin di gotara min de li ser mijarê bêtir bixwînin vir. Û li vir, em ê tenê bi kurtasî lêkolîn bikin ka çima zimanên mantiqî ji bo nivîsandina pirsan baş in. Di bingeh de, RDF tenê komek daxuyaniyên mantiqî yên forma p(X) û h(X,Y) ye, û pirsek mentiqî forma jêrîn heye:

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

Li vir em li ser afirandina hilberek pêşdarazek nû diaxivin/1 (/1 tê wateya yekane), bi şertê ku ji bo X rast be ku welat (X) - ango, X welatek e û di heman demê de endamê_of (X,"EU" ye).

Ango di vê rewşê de hem dane û hem jî qaîdeyên bi heman rengî têne pêşkêş kirin, ku rê dide me ku em pir rehet û baş pirsgirêkan model bikin.

Hûn di pîşesaziyê de li ku derê hevdîtin kirin?: Projeyek tevahî mezin bi pargîdaniyek ku pirsan bi zimanek weha dinivîse, û her weha li ser projeya heyî ya di bingehê pergalê de - wusa dixuye ku ev tiştek pir xerîb e, lê carinan ew diqewime.

Nimûneyek parçeyek kodê di wîkîdata pêvajoyek zimanek mentiqî de:

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

Materyal: Ez ê li vir çend zencîreyan bidim zimanê bernamenûsiya mantiqî ya nûjen Bernameya Bernameya Bersiv - Ez xwendina wê pêşniyar dikim:

Nîşeyên Zanyarê Daneyê: Vekolînek Kesane ya Zimanên Lêpirsîna Daneyê

Source: www.habr.com

Add a comment