Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Lazaiko aminao avy amin'ny traikefa manokana izay nahasoa ny toerana sy ny fotoana. Overview sy thesis izany, mba hazava tsara hoe inona sy aiza no ahafahanao mihady bebe kokoa - fa eto aho dia manana traikefa manokana manokana, mety ho hafa tanteraka aminao ny zava-drehetra.

Nahoana no zava-dehibe ny mahafantatra sy afaka mampiasa fiteny manontany? Amin'ny fotony, ny Data Science dia manana dingana lehibe amin'ny asa, ary ny voalohany sy manan-danja indrindra (raha tsy misy izany dia azo antoka fa tsy hisy na inona na inona mandeha!) Matetika, ny angon-drakitra dia mipetraka amin'ny toerana iray amin'ny endrika sasany ary mila "alaina" avy eo. 

Ny fiteny fanontaniana dia ahafahanao mamoaka an'io data io! Ary anio dia hilaza aminao momba ireo fiteny fanontaniako izay nahasoa ahy aho ary holazaiko aminao sy hasehoko anao hoe aiza sy ahoana marina - nahoana no ilaina ny mianatra.

Hisy sakana telo lehibe amin'ny karazana fangatahana angona, izay hodinihintsika ato amin'ity lahatsoratra ity:

  • Ny tenim-panontaniana "manara-penitra" dia ny fahita matetika rehefa miresaka momba ny fiteny manontany, toy ny algebra relational na SQL.
  • Fiteny fanontanina amin'ny scripting: ohatra, Python zavatra pandas, numpy na shell scripting.
  • Fanontaniana fiteny ho an'ny grafika fahalalana sy angon-drakitra grafika.

Ny zavatra rehetra voasoratra eto dia traikefa manokana, inona no mahasoa, miaraka amin'ny famaritana ny toe-javatra sy ny "nahoana no nilaina izany" - ny tsirairay dia afaka manandrana ny fomba mety hitranga amin'ny toe-javatra mitovy amin'izany ary manandrana miomana mialoha amin'ny fahatakarana ireo fiteny ireo. alohan'ny tsy maintsy hampiharana (maika) amin'ny tetikasa iray na hahatongavana amin'ny tetikasa izay ilana azy.

Fiteny fanontaniana "Standard".

Ny fiteny fanontanina mahazatra dia amin'ny heviny hoe matetika isika no mieritreritra azy ireo rehefa miresaka fanontaniana.

Algebra fifandraisana

Nahoana no ilaina ny algebra relational ankehitriny? Mba hahazoana fahatakarana tsara ny antony nandrafetana ny fiteny manontany amin'ny fomba iray ary hampiasa azy ireo am-pahibemaso, dia mila mahatakatra ny fototry ny azy ireo ianao.

Inona no atao hoe algebra relational?

Ny famaritana ofisialy dia toy izao manaraka izao: algebra relational dia rafitra mihidy amin'ny fampandehanana ny fifandraisana amin'ny maodely data relational. Raha lazaina amin'ny maha-olombelona azy dia rafitra fiasa amin'ny latabatra izany ka ny vokatra dia latabatra foana.

Jereo ny hetsika fifandraisana rehetra ao izany lahatsoratra avy amin'i Habr - eto no mamaritra ny antony tokony ho fantatrao sy ny toerana misy azy.

Nahoana?

Ny fanombohana ny fahatakarana ny dikan'ny fiteny manontany sy ny asa ao ambadiky ny fitenenana amin'ny fiteny fanontana manokana dia matetika manome fahatakarana lalindalina kokoa ny asa amin'ny fiteny manontany sy ny fomba.

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Nalaina avy amin'ny izany lahatsoratra. Ohatra iray amin'ny fandidiana: mikambana, izay manambatra latabatra.

Fitaovana fianarana:

Fampidirana tsara avy amin'i Stanford. Amin'ny ankapobeny, be dia be ny fitaovana momba ny algebra relational sy ny teoria - Coursera, Udacity. Betsaka ihany koa ny fitaovana an-tserasera, anisan'izany ny tsara taranja akademika. Ny torohevitro manokana: mila mahazo tsara ny algebra relational ianao - io no fototry ny fototra.

SQL

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Nalaina avy amin'ny izany lahatsoratra.

Ny SQL dia fampiharana algebra relational amin'ny ankapobeny - miaraka amin'ny fampitandremana manan-danja, ny SQL dia fanambarana! Izany hoe, rehefa manoratra fanontaniana amin'ny fiteny algebra relational ianao dia tena milaza ny fomba kajy - fa miaraka amin'ny SQL ianao dia mamaritra izay tianao alaina, ary avy eo ny DBMS dia efa mamokatra (effective) amin'ny fiteny algebra relational (ny azy ireo). ny fitoviana dia fantatra amintsika amin'ny hoe Ny teoréma Codd).

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Nalaina avy amin'ny izany lahatsoratra.

Nahoana?

Relational DBMSs: Oracle, Postgres, SQL Server, sns dia mbola saika na aiza na aiza ary misy ny vintana lehibe tsy maintsy hifaneraseranao amin'izy ireo, izay midika fa tsy maintsy mamaky SQL ianao (izay tena azo inoana) na manoratra izany ( tsy mety koa).

Inona no hovakiana sy hianarana

Amin'ireo rohy etsy ambony ireo ihany (momba ny algebra relational), dia misy fitaovana tsy mampino, ohatra, izany.

Raha ny marina, inona ny NoSQL?

"Tokony hanamafisana indray fa ny teny hoe "NoSQL" dia manana fiaviana tongatonga ho azy ary tsy misy famaritana ankapobeny na andrim-panjakana siantifika ao ambadik'izany." mifandraika lahatsoratra amin'ny Habr.

Raha ny marina, tsapan'ny olona fa tsy ilaina ny modely mifandraika amin'ny famahana olana maro, indrindra ho an'ireo izay, ohatra, ny zava-bitany dia manakiana ary misy fanontaniana tsotra miaraka amin'ny fitambarana manjaka - izay tena ilaina ny mikajy haingana ny metrika sy manoratra azy ireo amin'ny database, ary ny ankamaroan'ny endri-javatra dia relational nivadika ho tsy ilaina fotsiny, fa mampidi-doza koa - nahoana no normalize zavatra raha hanimba ny zava-dehibe indrindra ho antsika (ho an'ny asa manokana) - vokatra?

Ary koa, matetika dia ilaina ny schemas flexible fa tsy ny schema matematika raikitra amin'ny modelim-pifandraisana klasika - ary izany dia manamora ny fampivoarana ny fampiharana rehefa tena ilaina ny mametraka ny rafitra ary manomboka miasa haingana, fanodinana ny valiny - na ny schema sy ny karazana angona voatahiry. tsy dia zava-dehibe loatra.

Ohatra, mamorona rafitra manam-pahaizana izahay ary te-hitahiry fampahalalana amin'ny sehatra manokana miaraka amin'ny fampahalalana meta sasany - mety tsy haintsika ny sehatra rehetra ary mitahiry JSON fotsiny ho an'ny rakitra tsirairay - izany dia manome antsika tontolo iray tena miovaova amin'ny fanitarana ny data. modely ary miverimberina haingana - ka amin'ity tranga ity, ny NoSQL dia ho tsara kokoa sy mora vakiana kokoa. Ohatra fampidirana (avy amin'ny iray amin'ireo tetikasako izay nisy ny NoSQL tany amin'ny toerana nilaina azy).

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

Afaka mamaky bebe kokoa ianao eto momba ny NoSQL.

Inona no hianarana?

Eto kosa, mila mandinika tsara ny asanao ianao, inona ny toetra ananany ary inona no rafitra NoSQL misy izay mifanaraka amin'ity famaritana ity - ary avy eo manomboka mianatra ity rafitra ity.

Scripting Query Languages

Amin'ny voalohany, toa inona no idiran'ny Python amin'ny ankapobeny - fiteny fandaharana io, fa tsy momba ny fanontaniana mihitsy.

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

  • Pandas dia antsy ara-bakiteny an'ny Tafika Soisa amin'ny Siansa Data; misy fiovana be dia be ny angon-drakitra, fanangonana, sns.
  • Numpy - kajy vector, matrices ary algebra tsipika ao.
  • Scipy - be dia be ny matematika amin'ity fonosana ity, indrindra fa ny statistika.
  • Jupyter lab - famakafakana angon-drakitra maro no mifanentana tsara amin'ny solosaina finday - ilaina ho fantatra.
  • Fangatahana - miasa amin'ny tambajotra.
  • Pyspark dia malaza amin'ny injeniera data, azo inoana fa tsy maintsy mifandray amin'ity na Spark ianao, noho ny lazany fotsiny.
  • *Selenium - tena ilaina amin'ny fanangonana angona avy amin'ny tranokala sy loharano, indraindray tsy misy fomba hafa hahazoana ny data.

Ny torohevitro lehibe indrindra: mianara Python!

pandas

Andeha horaisintsika ho ohatra ity code manaraka ity:

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

Amin'ny ankapobeny, hitantsika fa mifanaraka amin'ny modely SQL mahazatra ny kaody.

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

Fa ny tena zava-dehibe dia ity code ity dia ampahany amin'ny script sy ny pipeline; Raha ny marina dia mametraka fanontaniana ao amin'ny pipeline Python izahay. Amin'ity toe-javatra ity, ny fiteny fanontaniana dia tonga amintsika avy amin'ny tranomboky toa ny Pandas na pySpark.

Amin'ny ankapobeny, ao amin'ny pySpark dia mahita karazana fiovan'ny angon-drakitra mitovy amin'izany isika amin'ny alàlan'ny fiteny manontany amin'ny toe-tsaina:

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

Aiza ary inona no hovakiana

Ao amin'ny Python mihitsy amin'ny ankapobeny tsisy olana mitadiava fitaovana hianarana. Betsaka ny fampianarana an-tserasera pandas, pySpark ary cours on kilalaon'afo (ary koa ny tenany DS). Amin'ny ankapobeny, tsara ho an'ny googling ny atiny eto, ary raha tsy maintsy misafidy fonosana iray hifantohana aho dia panda izany, mazava ho azy. Mikasika ny fitambaran'ny fitaovana DS+Python ihany koa betsaka.

Shell ho fiteny manontany

Betsaka ny tetikasa fanodinana angon-drakitra sy famakafakana izay niarahako niasa, raha ny marina, ny script shell izay miantso ny code amin'ny Python, Java, ary ny shell dia mandidy ny tenany. Noho izany, amin'ny ankapobeny, azonao atao ny mihevitra ny pipelines amin'ny bash/zsh/etc ho karazana fangatahana avo lenta (azo atao, mazava ho azy, ny zavatra tadivavarana ao, fa tsy mahazatra amin'ny code DS amin'ny fiteny shell izany), andao omena Ohatra tsotra - Mila nanao sarintany QID momba ny wikidata sy rohy feno amin'ny wikis Rosiana sy anglisy aho, noho izany dia nanoratra fangatahana tsotra avy amin'ny baiko tao amin'ny bash aho ary ho an'ny vokatra dia nanoratra script tsotra amin'ny Python aho, izay nataoko. mitambatra toy izao:

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

izay

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

Izany, raha ny marina, ny fantsona iray manontolo namorona ny sarintany ilaina; araka ny hitantsika, ny zava-drehetra dia niasa tamin'ny fomba stream:

  • pv filepath - manome bara fandrosoana mifototra amin'ny haben'ny rakitra ary mampita ny ao anatiny
  • unpigz -c namaky ny ampahany amin'ny arisiva ary nomeny an'i jq
  • jq miaraka amin'ny fanalahidy - stream dia namoaka ny valiny avy hatrany ary nampita izany tamin'ny postprocessor (mitovy amin'ny ohatra voalohany) amin'ny Python
  • anatiny, ny postprocessor dia milina fanjakana tsotra izay namolavola ny vokatra 

Amin'ny fitambarany, fantsona be pitsiny miasa amin'ny fomba mikoriana amin'ny angon-drakitra lehibe (0.5TB), tsy misy loharanon-karena lehibe ary vita amin'ny fantsona tsotra sy fitaovana roa.

Torohevitra manan-danja iray hafa: afaka miasa tsara sy mahomby ao amin'ny terminal ary manoratra bash/zsh/etc.

Aiza no hahasoa azy? Eny, saika na aiza na aiza - indray, BE ny fitaovana hianarana amin'ny Internet. Indrindra indrindra, eto izany lahatsoratra teo aloha.

R scripting

Averina indray, mety hihiaka ny mpamaky - tsara, fiteny fandaharana iray manontolo ity! Ary mazava ho azy fa ho marina izy. Na izany aza, matetika aho no nifanena tamin'ny R tao anatin'ny toe-javatra toy izany, raha ny marina, dia tena mitovy amin'ny fiteny manontany.

R dia tontolo manodidina ny informatika statistika sy fiteny ho an'ny informatika static sy sary (araka ny ny).

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
nalaina avy eto. Teny an-dalana, manoro hevitra aho, fitaovana tsara.

Nahoana ny mpahay siansa momba ny data no mila mahafantatra R? Farafaharatsiny, satria misy sosona goavam-be amin'ny olona tsy IT izay mamakafaka ny angona amin'ny R. Nahita izany aho tamin'ireto toerana manaraka ireto:

  • Sehatra pharmaceutique.
  • Biolojia.
  • Sehatra ara-bola.
  • Ny olona manana fanabeazana matematika tsotra fotsiny izay mifandray amin'ny statistika.
  • Modely statistika manokana sy maodely fianarana milina (izay matetika tsy hita afa-tsy amin'ny dikan-tenin'ny mpanoratra ho fonosana R).

Nahoana izy io no tena fiteny manontany? Amin'ny endrika izay ahitana azy matetika, dia tena fangatahana hamorona modely, anisan'izany ny famakiana angon-drakitra sy ny fanamboarana ny masontsivana fanontaniana (modely), ary koa ny fijerena angon-drakitra ao anaty fonosana toy ny ggplot2 - endrika fanoratana fanontaniana ihany koa izany. .

Fanontaniana ohatra momba ny fijerena sary

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

Amin'ny ankapobeny, hevitra maro avy amin'ny R no nifindra tany amin'ny fonosana python toy ny pandas, numpy na scipy, toy ny dataframes sy ny data vectorization - ka amin'ny ankapobeny dia maro ny zavatra ao amin'ny R dia toa mahazatra sy mety aminao.

Betsaka ny loharano azo ianarana, ohatra, izany.

Kirin'ny fahalalana

Eto aho dia manana traikefa kely tsy mahazatra, satria matetika aho no tsy maintsy miasa amin'ny grafika fahalalana sy fiteny manontany ny grafika. Noho izany, andeha hojerentsika fohifohy ny fototra, satria ity ampahany ity dia somary hafahafa kokoa.

Ao amin'ny angon-drakitra relational klasika dia manana schema raikitra isika, saingy eto ny schema dia miovaova, ny predicate tsirairay dia tena "tsanganana" ary mihoatra noho izany aza.

Alao sary an-tsaina hoe manao modely olona iray ianao ary te hamaritra ireo zavatra manan-danja, ohatra, andao haka olona manokana, Douglas Adams, ary hampiasa ity famaritana ity ho fototra.

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
www.wikidata.org/wiki/Q42

Raha mampiasa angon-drakitra ara-pifandraisana isika dia tsy maintsy mamorona latabatra na latabatra lehibe misy tsanganana marobe, ny ankamaroany dia NULL na feno sanda diso default, ohatra, tsy azo inoana fa maro amintsika no manana fidirana ao amin'ny tranomboky nasionaly Koreana - mazava ho azy fa afaka mametraka azy ireo amin'ny latabatra misaraka isika, saingy amin'ny farany dia ho fanandramana modely amin'ny fizaran-tany lozika mora azo miaraka amin'ny predicates amin'ny fampiasana fifandraisana raikitra.

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Alao sary an-tsaina àry fa ny angona rehetra dia voatahiry ho grafika na ho toy ny fitenenana boolean binary sy unary.

Aiza no ahitanao an'izany? Voalohany, miara-miasa amin'ny data wiki, ary miaraka amin'izay angona angona na angona mifandray.

Ireto manaraka ireto ny fiteny fanontaniana lehibe nampiasaiko sy niasako.

SPARQL

Wiki:
SPARQL (acronym miverimberina от Eng. SPARQL Protocol sy RDF Query Language) - fiteny fangatahana data, asehon'ny modely RDF, ary koa fifanarahana hampita ireo fangatahana ireo ary hamaly azy ireo. SPARQL dia soso-kevitra W3C Consortium ary iray amin'ireo teknolojia tranonkala semantika.

Fa raha ny tena izy dia fiteny manontany ho an'ny lojika unary sy binary predicates. Mametraka fepetra fotsiny ianao hoe inona no raikitra amin'ny fomba fiteny Boolean ary inona no tsy (tena tsotra).

Ny fototry ny RDF (Resource Description Framework), izay anaovana fanontaniana SPARQL, dia intelo. object, predicate, subject - ary ny fanontaniana dia mifidy ny triple ilaina araka ny fepetra voafaritra ao amin'ny fanahy: mitadiava X toy ny p_55(X, q_33) dia marina - izay mazava ho azy, p_55 dia karazana fifandraisana amin'ny ID 55, ary q_33 dia zavatra miaraka amin'ny ID 33 (eto sy ny tantara manontolo, averina indray ny tsipiriany rehetra).

Ohatra amin'ny fanolorana angona:

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data
Sary sy ohatra miaraka amin'ireo firenena eto avy eto.

Ohatra Fanontaniana fototra

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

Raha ny marina, tiantsika ny hahita ny sandan'ny fari-piadidiana ?firenena ho an'ny predicate
member_of, marina fa member_of(?firenena,q458) sy q458 no ID an'ny Vondrona Eoropeana.

Ohatra iray amin'ny fangatahana SPARQL tena izy ao anaty motera python:

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

Amin'ny ankapobeny, tsy maintsy namaky SPARQL aho fa tsy nanoratra izany - amin'izany toe-javatra izany dia mety ho fahaiza-manao ilaina ny mahatakatra ny fiteny farafaharatsiny amin'ny ambaratonga fototra mba hahatakarana tsara ny fomba fakana ny angona. 

Betsaka ny fitaovana hianarana amin'ny Internet: ohatra, eto izany и izany. Matetika aho amin'ny google ny endrika sy ohatra manokana ary ampy izany amin'izao fotoana izao.

Fiteny fanontaniana lojika

Afaka mamaky bebe kokoa momba ny lohahevitra ao amin'ny lahatsoratro ianao eto. Ary eto, hojerentsika fohifohy hoe nahoana ny fiteny lojika no mety tsara amin'ny fanoratana fanontaniana. Raha ny tena izy, RDF dia andiana fanambarana lojika amin'ny endrika p(X) sy h(X,Y), ary ny fangatahana lojika dia manana endrika manaraka:

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

Eto isika dia miresaka momba ny famoronana predicate vaovao / 1 (/1 midika hoe unary), raha ny X dia marina fa firenena (X) - izany hoe, X dia firenena ary mpikambana_n'ny(X,"EU ").

Izany hoe, amin'ity tranga ity, na ny angon-drakitra sy ny fitsipika dia aseho amin'ny fomba mitovy, izay ahafahantsika mamolavola olana mora sy tsara.

Taiza ianao no nihaona tamin'ny indostria?: tetikasa lehibe iray manontolo miaraka amin'ny orinasa manoratra fanontaniana amin'ny fiteny toy izany, ary koa amin'ny tetikasa amin'izao fotoana izao ao amin'ny fototry ny rafitra - toa zavatra hafahafa izany, saingy mitranga izany indraindray.

Ohatra iray amin'ny sombin-kaody amin'ny fiteny lojika fanodinana wikidata:

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

Fitaovana: Omeko rohy roa mankany amin'ny fiteny fandaharana lojika maoderina Valiny Set Programming - Manoro hevitra ny hianatra azy aho:

Fanamarihan'ny Data Scientist: Famerenana manokana amin'ny fiteny fanontaniana data

Source: www.habr.com

Add a comment