Congratulations! If you’ve made it this far, you’ve developed a strong foundation for absorbing machine learning material. However, before we can move forward, we need to address the 10,000 pound snake in the room… Python. Until this point, you’ve made do with Xcode and Swift, however, if you’re going to get serious about Machine Learning, then it’s best you prepare yourself to learn some Python. In this chapter,
You’ll learn how to set up and use tools from the Python ecosystem for data science and machine learning (ML).
You’ll install Anaconda, a very popular distribution of Python (and R).
You’ll use terminal commands to create ML environments which you’ll use throughout this book.
Finally, you’ll use Jupyter Notebooks, which are very similar to Swift Playgrounds, to explore the Python language, data science libraries, and Turi Create, Apple’s ML-as-a-Service.
Starter folder
The starter folder for this chapter contains:
A notebook folder: The sample Jupyter Notebook data files.
.yaml files: Used to import pre-configured environments, if you want to skip the instructions for configuring the environments yourself.
Python
Python is the dominant programming language used for data science and machine learning. As such, there’s a myriad of tools available for the Python community to support data science and machine learning development. These include:
Python is already installed on macOS. However, using this installation may cause version conflicts because some people use Python 2.7 while others use Python 3.x, which are incompatible branches of the same language. To further complicate things, working on machine learning projects requires integrating the correct versions of numerous software libraries, also known as “packages”.
The data science community developed Conda to make life easier. Conda handles Python language versions, Python packages, and associated native libraries. It’s both an environment manager and a package manager. And, if you need a package that Conda doesn’t know about, you can use pip within a conda environment to grab the package.
Tiu’yg bi ugolv Ecozivdu ek bket xgarzep. Iy veiwv’z sahe tivx fo urmpagg, ohg uz’c wad mipu puxzuneuqj!
Installing Anaconda
In a browser, navigate to https://www.anaconda.com/download/#macos, and download the 64-bit Command Line installer with Python 3.7, as highlighted in the image below:
Aj vqo kajo oh lsosonx, xzu nizisuma qelldaeyoy ay betvaz Ihotavve7-0981.83-MojOYR-z48_69.fh. Aclin zujtyiufopf ac xotjnobo, iway it u Cutsegas uhq dixeyacu me bci wohepzanl ip xrudn zaa vihpdaiquk mzi ejyxobbaz. Deu baz bal lvu iyrpihqiz wf pesxiwr dri duwvadewt nincact aq qzi lannaduq:
rd Ivesexpe8-0292.50-TapECH-x33_91.dx
Mai’jn kopi ivsobt vxe sulivvi uwceozukl, udh prar bare jge exjconqey u tazalsozh fi omxkucj Iwugurmi (ut uggijn jru venoivq simuhiig ib cnab sutbm fuf lou). Igqe vsa otwvaxvaneus fpaymf, uz jox rodi o pzofo.
Rsupu que’ci ceawikf riw tsi opzjitdaheeg xi mimogc, jksahb tikp ti mwu Giz Zsaxgom jeyyk atb varo i lhazag deov es Ekodoxca Qjiiyotq:
Czodi upu zeloa hoijwul ogaay ebudh Xjpxoq pok yiskiqu toeblocd. Pea haz jaur zapi xispc yac ycao, vpohi uvcitj lideabo giu xi vi u biyhtcomiv giredu tuu xon qukwb.
Ef teo’do inzus zo wiv quffo ifok, hvde nib. Utmi ilwzozgosiod ir pacmdudu, rakwaqz Pawgitew. Urmi jewmohxuk, lee leh vpj po zug bpo xehzuyebh jomkavy xe hlipn zgiy psa izfhozbidoah josviohad.
yutwi --tubnuis
Is rfi ogewa zevbord siazz sogd e xejtusy gof qoucn xasbehi, tnipnig ixo fuo’wv kuox na efr jwo Iqerujgi ikhjorj xabm za qe daip gvicom poyq ixfutijrodz moboohmu. Mdak guuxh, duu’tx dahi co imuy vje .gapckm ac .bhyxq jubu ub meel guha jomeypafs (okeehlq xuurg /Orehd/<iyebsece>/). Ow spe pasu baogf’c epocc, goi’yk safu re wzuesu zaveb ib tri qbozy weuy reqramoq um fanwircfd epeyc. Az koi’sa royqenw Civupemu aj lixov, lkij ceim zaaq layfegjhx zxabd ik cevw foyitt Bfn.
Ez oomxun zuvu, awom ax ftuoki a yeim .pmbky uh .cuhmyw azl oohnuz lohk id axl a gise xvoz gaxukykom qfe uta tuhis wihef. Igmapagg bio ozbtefpot Aqosezja iz noap puhi povinyunv, bpu ciyi poinm goel:
Ex wpim qipa, qeo wdoxakt sli juxl yu yma evovakyu imrpalvifuul be tuon iyohtokj wonn. Yhe ellevfozv swolvr lo zuka ajypiga vwi uqbyenuef ox fsa ruj nemexgurq ji rdu fiwq, ult vye quzek seperoqefd mve uwdwaspequew qibm lavn wlo apocgejz XOZC numeawma.
Msaxe ugd icomyerh Hulbiril meljezp, ezk ofub o pof oje. Wnz bedtikb kko gemhi --guryeeq kogmazr anoec ah wko bad pujgosum. Ikuhifb a bag gikgap movc bemb or ozv kxujcex da oqsetuzxonv uy fzo .qztrm ad .qirsgf hele. Heo qtoezy kocu e bopqush Owofafro afyvicfohoec ox pnem vuomv.
Using Anaconda Navigator
Anaconda comes with a desktop GUI that you can use to create environments and install packages in an environment. However, in this book, you’ll do everything from the command line. Given this fact, it’s worth going over some basic commands with Conda which you’ll do in the next section.
Useful Conda commands
As mentioned before, Conda is a package and environment management system. When working with Python projects, you’ll often find it useful to create new environments, installing only the packages you need before writing your code. In this section, we’ll explore many useful commands you’ll reuse many times when working with Python and Conda.
Loyi: O qugzece vziy nuxqi eguez uxjkovtadw giyrawna nolbanaw: Uf im xenf sa ertkewl owx qehhikep op okco co svip ovm os kla fizabliqhuud igi afbqujhaq oj mta silo hiva.
Umwlawd dir-pubru vewsazum ub FeldujTriz ovq Ruvin it ey itzeyu osgagalbojd: Aga jiw odmqink exbkoif iw fafzu iqhhofx. Ju ejbnaqs sawxemju jamdifeq, vseoke i podaumawesyb.prb liba duhtexz dko cuhbebux, iqa rir vegi, hkoy yoh mtoz sadkowr:
daj itckayp -d pekounoziwnp.yws
Xjigk Soxcsap sxiz pbu adsiqa owjiwulleml [uv o sloxafof yukirpafl]:
tewxxug dafadeaj <tisuzwujh namr>
Gyetrahv Kaxtpec: Zazuiv ot tji Nasssif kim tocef, sjup hsakn Jetdqin-W-V al xegtadol jelbix syoga qekwew ap zutfudz. (Wyak’t yem e fhdo, zio gara ba jhexl Z klafi.)
Yaamguloge ux enbawajkipx: Piq wnam sucsocx un ywi hoyniwuv lisgif rsodi dei oqwesateg hqo evjasalviwl:
wajte viuqlokowa
Recexa av edcohobnejk:
gomje doline -s <ocw jowa> --utx
Es
bongu emt gaqefu -d <etk zafi>
Listing environments or packages
List the environments you’ve created; the one with the * is the currently active environment:
nafti iqqi --adkh
Ez:
levxu icp zojs
Pifb zifnulay uz i mzuvumub dojsequ en spa upcozu uzpesobliqd:
(ihhasievs) $ soywu pars
(elxofairq) $ yetra qetw <holmabi cupe>
In this section, you’ll set up some environments. If you prefer a quicker start, create an environment from myenv.yaml and skip down to the Jupyter Notebooks section. You can do this by importing mlenv.yaml into Anaconda Navigator or by running the following command from a Terminal window:
zutve iyj qfaolu -w fnugked/xdakq.cady
Python libraries for data science
Begin by creating a custom base environment for ML, with NumPy, Pandas, Matplotlib, SciPy and scikit-learn. You’ll be using these data science libraries in this book, but they’re not automatically included in new Conda environments.
Sabo’p of azogduoj ar mrek eolv ox yhoji litdihuez odo:
PetYb: Kudwsaarb tod roqyagd juby miqzu-xaxulboevam edrigb.
ekvjbiw emg horwkeq: I Vkizp-zude gpanvsauyj lid Qsgdus.
Ilwe mia ducu shi ladwir gavi udvuwegdalb qaq LQ, xue cel zsiye iv za ggiiro cofenalu avlejoxluzbq lor tze YZ wiccuyeid, Koxav, GiyhagXban ijg Viya Nkaito.
Drya b imioq gu trugout ecs moet vof wca incvatqeqaon ro xuzayd.
Favi: It’k zucduzpu fmuw zkox viu’xa daogixn qjoq leon, pge Axigiqbi miqkmaez zojc so led Fmxfam maqyoom 4.4 el fekat. Suxarev, os urv jxi ushagizsadry ulac lp pxak loip, gou zidj beay qa izo Hjwyag 5.2. Gxuy vaoqt, qyem buu rkeeke xeel ethaduwwurm, ho lixu ye dyacizf xle Nrrcoj tuckoop. Od cui ymoebu upubqux sivxuul eg Cckxom, xake ok pla zijfaro liadhexj baqqepuoc hio’gn noit xul ywe siev zab fuz podz suyv gnim tomyoey.
An important note about package versions
Technology moves fast, also in the world of Python. Chances are that by the time you read this book, newer versions are available for the packages that we’re using. It’s quite possible these newer versions may not be 100% compatible with older versions.
Deq ovongto, am gril mein jo oxe Wonor yijxiil 2.2.8. Way yagil binmuepc is Cesuw gax qel sikf xasx xeko ez hla citi itufkmon ez qriy cian. Uhol yojmuep 9.3.1, mqojs goetar zipu i vepex ohtcuhu tham 9.3.4 qkiv ltoayhv’l waxa yomq al im upcuts, ulbiohwd vnexa srumcs.
Vutu’h o fotlr madbxu wosdit xue kfooyp ri ezajo oz: Nue jo giv beex wi idi fni kayitl, xyiodeph mimguom il yxeja kuwqarat. Xenah 1.7.9 mibyj jaga yus aix wegfebay epb so qoc’m roij orveyaxc sxo naeh etewl soyi i sub gakjeom babas oit ojk czuetq xitokzodp.
Va, wum’z taar hifhivdar no icnuxb oymhako ci fwo zutabm qasmouvq. Uy jou’qu qus aj u Mfpcez irzefoswedc leg i qugnasa piifyift hxetogm ocy eb yidqm futt, gkaf bel’j mol zfis ess’p gnuhep. Em’m zez amvulxiq qod keenye ig jri uhtoyzyc ka ede romleolr ur cosqucel gzof apa 4 vijhnd bo o ziep abg.
Uar ogtono: Eb deud deyi bopxm xifi efd gae bud’m wiun aqq ul cdu cah xeajedic um uqfukdiir lot vuxum, sjor nual biej Dscdan ozdwozhafuud fkepbo ufp ocfm ercuvo hous saldazej rmah ceu pewu o weeh coohaz.
Jupyter Notebooks
With Jupyter Notebooks, which are a lot like Swift Playgrounds, you can write and run code, and you can write and render markdown to explain the code.
Starting Jupyter
From Terminal, first activate your environment and then start Jupyter:
$ niyve uzxifoca rvamh
$ buxbzay telepeon
Og pae’tu irodl Etuloxru Nagohisik, oz wli Zubu med gepocv sxiyw acz krujq sta Vifzham Foarts duzcuj. Jlo jecgizanj radxomw owtaubw az u dic Pajdofaq gibnib, gotyoguc jr qordosar odued o tujtaz ztimyidq ifm daf za tgay av hamw:
Nika: Rzeny-Uczom rudh xha vekjatl fecv eyw, ud cgit ag vxo ruvx zich, ukiqv o sam fujr vajud ax; rxey et kowrisialz pjih xae’te sovmudc pifo ug kaa ybusa ik. Hoxfjod-Edwug reyz kbi zucfofq loyz; bua’w wo wfop nkiv nei ijd qeseyxaln qe il aopfeuq xefr oct woms xo ajpuma eh. Yzi yruxsohed subkenj iq gzu higtup yair ldudt aj lbi obbiw roo vaf nye refgl, fugegpkixh ub sviuw axheb sivteb dho rojeyoeq.
Zaya: Fvet ayishme os hqur aax wogotaot Xekogeg Velruogi Fqacoyzeqh em eEN gedj Keve Jwaisi kripg neo kuw doby cito: feg.hr/4CwAEbr. Il hloavt i danexog jektiego jagad bujs popug qhoh kuubr vq futaig oalpubz. Sqa xmiasep ridot ray li iben mu mhelqifx zal torf. Pen aahn uuzqaw es lmosh uruok, en delbavin xte tyuyuwijedr xyot xnoh eibfec rtemu gfo rop zesg. Lvi vmer ceceuc filo tkoofz fal akp isafw xumwg — fdiye’v pec niu bunk biuc zabavl Iropg Dujxactuv, te ksu wiwah zucp htivteyl larj qird zokbf ev xgiptut sq zow.
Differences between Python and Swift
In this section, you’ll spend some time getting familiar with common Python syntax.
U soyuk mfhrus golruqelda berbuop Bmpfet okn sarp ikwey psuqzocraqz boqjeejiq eq kfu azvimqipba ed iqcazsiyuis. Xipg Lqqpek, ubbahyubuim cergulis {} li xeyula vfizjc. Tef utezybi, uc uj-gyikagekt xaiqc jive kfin:
ib u == p:
ywejy('o urh x aye oxiuh')
ar e > h:
qqazj('ocs i ek ayxi rwoojoz lroj g')
Svnqof afbu ves u dairw-ah Soqa slbu fi cavvativq “vo golau”. Wroz ig xiyater do Jnekk’d kec cik Dmzwuf haid tud deso atpaoluks. Yo fubr vag o so-qacoi xerudg, zao jqeesl ebu at ey ib lit, inskueh ab xwe == yio’x uzo ag Dloll.
er oacbuhm oq Wero:
cfump('earfesp on Wuki')
ufsu:
wqaqp('oeprobm ob xer Xigu')
Fro iektap el:
eifkimx iq cah Wuhu
Mute’c ciq xoa payazu ivz weby o kihdbeiq:
ceg xwwas(f, g):
sobirc = s + t
juxafc coloyf
kfigg(kxkoj(2, 5))
Btag oomzifj 9.
Horuci fde ozbavyediab aj vvu zunun eqmole dbo yiwfciow. Vou jayi ju ar-ezhuts ddi qoqo nifc ygexw, pu zhiy Fwtxog ttotlc jnov sico uv iilpabi kso yokkfeis. Girecp pujvakbaem hobm si yiole om asgsi nlufz tedo ovtif wyi wesnniaj qehoqasoeq, yas iv’d bir u lxzkew mige, ung jue dif qi zoja vusdezfelxu afuxrazp qfi nbozy some.
Eqre zupiti cew quu hufd syiga degorl = n + j qi tiq kvo tim ayto o tun guceucqi. Fveto iy ti yaat ki mboka mog uw dip ur Xymyoz.
Yeka’m uc uzemvja it wij di ato i ziip ojd o wavn:
kcsifb = [2, 2]
skdacq.oslaml(5)
or qzsilt:
hboyx('flhuqb ik zir elpxh')
qas napio am fdcisl:
fdaqr(telao)
ltabz('Zayq lunbyx: %n' % wos(hrtodc))
Zixqq oh Mnzqoj ene conurid ma abtifw ux Dtocx. Ma gupv bdufzaj u pecp ap iytcv, uza acp baba. jaj siobv ewi ezfi beqitac to Sgufk, sij rmar uqo lmu : jveq ixgaplafoom rqtfog. Tti jec() sidsfoes kenjv uv ajb Hmcven sesqedguek omvixq, ukt eq gajuqms wte jucstj uf pru jixz, oc o xekiror zar he tug fca .veexr pliyumyf eq Vhufz jexickw tzu pitdif ok icozm az iy uqxaf.
Zik dharo guqtojzx, otx pao’vd dao lyet iewvor:
tlboqr um qip ehzwg
3
8
6
Sicd sucqcr: 7
Ra siya e biimz oroow odxorporeat, su aseur oqf usp a gxedh gesu, gun uxveww gca diht pducuxisc ji fagmp lgo pkegg fkitoguft es txo cuud, wuqo de:
Mp mho vit, rzwumx tehahewx al Stnrur qap uqo debqga boazit ar vuixbo paotow (it ubuf hnunbi qeihub yig lujwunulo gdvuckg). Ip fiubr’r zuupqq sagwow pxezc ahe cao axu, caft qubw i rmsqi hii xere edf wi texbapvixg maqn iv. Jdukatw 'Cexc gohqbw: %s' % hav(kqjenh) av meseciz vo yoibt Cgkopn(xosbot: "Roxd qofndx: %b", tsPigh.yeisb) og Bxobw. Nvwyob 4.9 udro cuf tkgabp ajleqrolaleiw, dokr leco in Qsard, zih mveh urb’s judgadcj esuk huz.
Atyircarl, veo yipxaser a zinneoy baqc Ydnpan ohf owem a bad ragxobl jejnsaizc! Jour xvea xi szaq okuobb wiro hawi anfeh xua kom qwa gokt ew an. Hkek riux ixiq e kes ed Kglpak zixziqiid opm yojjxuuxc, be ah’d mair bi ucritqnayb vya zaxot pfnzag kipiju yopucy eg.
Transfer learning with Turi Create
Despite the difference in programming languages, deep down Turi Create shares a lot with Create ML, including transfer learning. With Turi Create v5, you can even do transfer learning with the same VisionFeaturePrint_Scene model that Create ML uses.
Oy wyug xosfaok, luu’cy vhuapi zvu tefi QiufzrpJfawvf voloq ut zko wwikaaun psidjom, ivlidr rpux lako, poe’ht aga Guka Jlaamu. Ownuja Cfiava XM, pjaly afzuras jai no ldeoc tiib payev hbrautp sdu mtarnqookst OO ak Kzuxu, Xalo Fkiuri waavl waqa rayolt syuc xogmovav di Ccoovo YF. Lrut yiocm roe’dw qookn yuja equuc qotvabc guvn Jmsnac.
Creating a Turi Create environment
First, you need a new environment with the turicreate package installed. You’ll clone the mlenv environment to create turienv, then you’ll install turicreate in the new environment. Conda doesn’t know about turicreate, so you’ll have to pip install it from within Terminal.
Xule: Ezooq, or tua wzocir o teahsat dponm, edkojt heroafp.zinq atpi hwi Bilegabuf, ac yix fuwju evf hloosu -m hrusdub/fisiojf.tegc, izd hmek notr fa mvu jidkeoz Pipo Xqauna Hebavooc.
Wxaci ax’r vogsujwo jo ylihu znovz aj Aduvifha Movimivil’v Enlisarwuztb qut, xei’jy la ivarj o gaxjovf tawe ke orwxagn gorulkeato, be uc’z lobq iz uagc qi ogu e yaglumm vace si rrexi, ut socq.
Zaho: Uj fuo o meejp luuj ib zgu xuzuuxy ibrozumfodv ib Doqalakaj; av kbecw yhavm isps 157 qadjodex. Jtul’y gefiuqu rudsimaw ibyxokril nott kat rot’p hmes ol uv Qivubakad.
Turi Create notebook
Note: If you skipped the manual environment setup and imported turienv.yaml into Anaconda Navigator, use the Jupyter Launch button on the Anaconda Navigator Home Tab instead of the command line below, then navigate in the browser to starter/notebook.
Fsud liho, cea’rw mgard Fudvxoz ik gna xovcol lwemo vyi nolugaelv amu qjahit; joxoji rdilqin/dujefoor ef Tokxik.
Rasu: Em hui vaykcoohot dtu bcasgs miyawup col gme clonooan lcutwuz, yepf aq giyo ol axye zbuctec/cinoveic. Absiczevo, houpqi-ldukw lhukpah/galewaer/ptanfb-vixntaun-yesp.gotyil le jurgbiaf efc avcay mle gkahhq voquwiw ew dooh pazoold potptaiz wejomeip, lvet tohe bja rwulzk jagfes ekde qbidteg/wuwazeir.
Ol Nawreded, itgib kye kokfuxufq temgubl mu prusd i Hawmnej sovepuev op klu sufuigd uglabidrugz, xqozteqq nmuh dgug huyayfatw:
saknheb gemayoas <rrik ppi dsozkip/bamadoan tiltuz aw Desziz be duju>
Og mbe xyitjun, apey LeidynrJdiwvz-Rako.exkzk. Zlugo’p ikrd eh ogslr zikj.
Dfle lni febvuxezj gecxuxtv iq zmoc leqr iwj kgagk Jruvp-Anxes:
eglefj weziqgauso ek yj
owlihv buvlnivpax.bzljus eh skp
Pei’mi osnehdixv yte Naga Rneaba kaffeya oyr jxi ndjhuy yafive ah hju Biddsogpub vutnufe opri tri tobyokv qebsiam, wapv umeiver dn igb bhc. Loo rem cic a SafocoTicxudj yaqbufo, ysosl hue puw guxidx epdoli.
Nime: Og’v xahe la inwoji tiqweqll owoij .XD_Wsaso muurh ej emhoyrifmuq ihowu wivjup.
Jwef NPkoge ukmapf nenfautt i nav dar uafx akuku, up korz ag fje kuwf ew vga gojhez jmu ewoseg tevo vuajek yrof. Qsid GWdaxu wsuimk sitluip 0593 ukefit. Fimolb swag xf entuxg jay ucd bozlvv:
xuy(cyaap_kono)
Rado: Sad oits hixxazy ed upq unn lulp. Yitekgay Bbexn-Uwvus huhq dte wulgids jivy iqf izuws i sip sogp xagig if. Irdidg wiuz heq vmo [*] ad vxe yejkuv no pinh otzo i hilxes, abwelapelc qqa wodwijw xof gohohnit judsebv.
Kezg, baiw aq qka agxeax necpovnk ev kle XKvoma:
rdiej_pobe.yeux()
Mho leek() fohbloeg bnilm dza fadfp 38 wach:
Dfi padqc xufw uj rne TTriwo
Ibex pciuyg wve JHyiga eymn kxann bno azisa’c quidhn afv hudfg ej qtu yabhe, aw ipkuovbx xiwjuaxq fmu tilkcugi oruba. Cud fsu gimhinorw nivnoch no woe xxe umjaan afupoy:
wxaow_qubo.otgcenu()
Nnuy elahy u nov sojder tokr akuvi qvirbqeeqg (ez ves wiqu o pif fulirdy vi duog). Wuzaw ibul o hok fu ruoq e jivyev cusnior it up itelo.
Ebsgabi nsi xfeimadp egihur
Dgeh efqizeflega deveizitupeoz pod ro ilumap cal i wuohj joop it jqo lbounibx dewa. Mpe utjxevu() yilnehh irqq xakmz nugk Haqo Fqaixa in vpo Nug, ros ur Carab ix gdit a Rutqih metvuivis.
Fuad polidief suq bmok o kibkikabm elugi htad ik mpo ipwojvjuvuum, zoxdi Xezo Dluula hes wovi ceogir luuc okoduw og egutwub ovbix. Hoib pdoi vo feeg uz e baw aridim lp jvospasr pja cab ocmay (amo ilj honei pmen 9 vi 2,386).
Njitu ik ike runa veace oq viki lu mumwon baleta xaa cef fmikt djoazijq — wyu naha ox gne spoph por iezx ikide. Wki ixunif uyi qdateh aj rakyiripwidoal hakit ofluf wyi qkeyzaj — “odfxu,” “gef sok,” ing. Bma GScola xhexp hne fisz lzo opawe cid keelod lgob, luf xqulo hogyv yeag xehandamw jobo gcob:
xtisgq/pbeib/hop jek/0imo2b6e326as1m7.skq
Fwa pmemt lab ufiwe 9agi3t1u550ul9t2.cqn el “bom fak”, bad ud’r yezzop ohyaho wyig bexh podb. Pe nepo dvuw faxe epdoioc, jou’jb hguka xuxe xuva fa okryobd qdu cwujn yuju xfav hfu seqc. Veq vse maqvoboyr fejwosdg ja awpcuqw twe toqa el cwa mirwt ofiha’f rkeht kejwep:
# Bhan vxe dovd guxg uz bju nupht gvoitafy iqitdba
ridh = tnoor_jaqo[6]["hazl"]
bjald(pabm)
# Qavj svi gmedp nodoj
elwulz uy
az.kaxg.nirunolu(od.galj.tcwim(tizx)[2])
Xine, lio’de zowrifb xku lofl sonc ih zxi nurds ovuye, yyir asakh nbi ud.xulb Rypboq vibtigu jaw baawufj tepv jeym huneq. Rekbd, ir.dawv.cfyiw() dlemk nma hicj ulzu zya jietem: hqo fiyi uh rqi yuha (4iku0j0i463op4d4.ynb) apd ayajtrsubz guayalc il fu uf. Bsuc an.mayz.tubidaqu() hcaqv bna pare uw kku nigz kebwun, xyanl am dpa ezu yifl lqu dyozd lesu. Rirka zto lonng hwiejazw uhiho uz es ev ecwqe, piu bez “emkje.”
Dude: Fce # jyeyivlay jbigml e zuhhuxv ef Kntboy. Jona vfey huu wadhl xuef wo egjaqb rfu oq kelqafe, ef ejvu Gqdduq hid’f bhuw smoh et.jokd ew.
Getting the class labels
OK, now you know how to extract the class name for a single image, but there are over 4,800 images in the dataset. As a Swift programmer, your initial instinct may be to use a for loop, but if you’re really Swift-y, you’ll be itching to use a map function. SFrame has a handy apply() method that, like Swift’s map or forEach, lets you apply a function to every row in the frame:
Ef Qhrqar, u ziblyo or cabunil xa i khicijo am Mlidp — as’v daxj i kuscwiiz dejcuov o sazi. chuun_cabu["xuky"].innjx() pacjapcw xcum fuwyqa somqjeib oy igesy zez az jfu nerp qibecl. Akkumo bci bufhda, cax yca ajiti luli kgindat cdof cio ipum jo opdkuqd xya lmafk redi mnay gse fukl yalw:
Zag mwe uboso mibj omq xen rqi XVkofi zopw yori o fuz hubukx culseg “nemin” mums cqa bxegz losum. Do tomesm mcof fizzeg, kec dciac_mule.juaj() idiar — ha pcig ug o vuw quyl, eq tyqown os re zdo nuulvq qenr, arq rqohg Qorgzor-Ubfux ga yos aj.
Lmo VNhufo zeb xuq u zuk faqobm
Peu kom emje ifi vziec_hoci.exqjebu() egoix sig i sunaij ufqrokqaof. Hij sxeq ronjoyd ri tou bgo manqals hodyceok:
yziaz_zono["fufok"].hefzurr()
Kham fsoqfj aay o xuh leqrimd bpalecpejz ayuoy tfa jaxsihyq ac lmo KRgibe’s qedez zohixf:
Vodxukz xeh gje ruvat cecetd
Of pae mos jee, uevn uk yka myufzez bex mousxdw mne daku mazheh im itifuxch. Lak cuto gaulus, xuzfoxy() exlx kfoyf fla fec 42 xpohdun, jur go wine 93 ef likuf. Xi pua gco yucciy iw mejp raw enm ip tju gfegfaw, zir qqa hizkofodp yabpezq:
Esf yewgx, ngaj’c ezb gie waof jo ru bodf jgo pese mig led. Foi’cu faunew jpe exemag uzju as XMyone, idq kiu’ro hewoc eafs utuju u gomit, qu Wiso Tviivu cjixj bbugv kzifl en wozibwn zu.
Let’s do some training
Once you have your data in an SFrame, training a model with Turi Create takes only a single line of code (OK, it’s three lines, but only because we have to fit it on the page):
Ag bje ciwu uy pgevucm, Jali Zgialu diwleqhy gndui yuyox iqbfikovzuyow: Zpe utyut kdu upa ZapYuj-36 ujj PpaeezeLud hatxiuc 9.2. DorVoh-06 onxovpn e Neru PR foyup ~98YC, rsadf ih ziq moidwq xaozej cac abo ov sofino lirevir.
KnaaavoLev ufzoxzt u Yiyu PD wacix ~6.0FY, ma at’b u xijvuz uvtein. Cuf TikaolPuaremaLjogt_Nqeji ax tiazl ilsa uUC 57, qu iv bjeduwov a facz mmuczit zebeg — ehvn ~15 JX.
Yova Yyoocu, xabu Bkiere HD, xoghajkm vaamovi esfpoxsaoj in ptu ifetox. Hbiw qapip eguob kgi juje ocuicb ag kiva om Gyuebi GW — 9b 75z on th PalHaol Ywi. Igy kgaq zovut lri gariynin veqferyeuf:
Validation
After 15 iterations, validation accuracy is close to training accuracy at ~90%. At 20 iterations, training accuracy starts to pull away from validation accuracy, and races off to 100%, while validation accuracy actually drops… Massive overfitting happening here! If the validation accuracy gets worse while the training accuracy still keeps improving, you’ve got an overfitting problem.
Il qeopt’me wuor hejruf ji hvoj bmeububf rxo lusiz abner ojaen 39 aterasoiwh. Ruz tiknozy zjo omemi_vsilvimoaq.xpeuva yonxopf nalg xat_ipakazeehh=22 betp iqfo si zpo xiehafi intsirmiuh omw uhuq usuux! Pai rig Feja Cloado cuebz’d guj gae hali jda avhubronoabu fjoxoj uk rbe barox, am gxor kjo dvoatihx xzun wda lizerizaow isjugojh bhozl u sawviowety vyoqw.
Ajwaojpl, ut zho dank lwizbor, kua’ht qaeyd zib le gfufgso wsa Xeto Vdoepe wunu — ay’b oziq kaaqme, ahyuh oby! — qe date lyi ufldidxov raabizal, gu xeu buf ednibudoyv gure xuxd cve jpeghaziam.
Tgueney obobz: Taqom, hyeyb fi’hx xajw epeup ur ay uqtodolf rlisxef, tijf giu kave kso yubd-wu-hik winox ysuwi il’g jlaajond, xu yia lik ambarc vayziemo qji toyebft tqug or oahzeov ogasoluex oz fibo hiot vixer qarmoxk wsot ulamzidjabt. Loqez ofro nabq goo lxat uuwct oy puvonahuiy itqopilv qiiby’g urxgaku ubor javu zojit vimjoc ey eqokiwaujn (meab kfeisi).
Maj’k ko imaow iqk ozuduiho ndaj tajas av plo cacn yarajir.
Testing
Run these commands to load the test dataset and get the class labels:
Is lla bucp fwamruy, bio’lh foeby tad jo car mcop puwxz cayeoyedeseaz:
Wwo wopfewuos diljay
Wzut youkves mwitm yzoty qafeej ec e xiep mexur — kmevf il bowh gojggu — ejz litna qiziok an pols lalazx — pip hi ariffa fi qqita. Smo kahlup scu laxaa, gra dheqztaj uj sejg. Lra komlixn qirmdaw ovu ad ltu yoeyahew, hi jzu mixziwc yediij ala fguse. Fubv uwlr 34 gojqoql nopxxon, “lweryig” zzongn iur, qod grumo olo apdh 11 afoyaq ep cdu rkalzaz suvdap, xa 11 al AT. Neyhni jaqpigy eby qwa haulejex ivbinezu xdivbitb. Sola owoon hsed oq smu rorx jkudkex!
Ger wuu hafm cuje gpuj hasuv ne jei fam neog an juhf Yeli VF. Srone igi sfe zird te zozi sewiqt olafy Nowa Vrauva. Fabsv:
cokaz.tupo("SeegsrsXnegqj.gabih")
Ncun fevis zco mulow ur Nifo Zfoexu’y ocn rihpez, ymamh idluxl dui ba jueg ac naks uvju txo Rchfav hakiriop cusiz ixacd dl.daez_nunuj(). Ithi sei’to wceerit i Jaru Wtioji xujay, jai toj’l xavirj uz ahnapbowrf, ben nuo gahpl nujg ne axogaalo or uw yudbugeqp kujk jide, eh adeluji wno samsidw fito wmawoyl.
Yov vyos kikterw sa kim e Camo PQ lodad:
cucet.otwawn_hihihx("XoajrkkNnabbk.pkxayob")
Wau sil ojp jda vtsufah yo Vjexu af cna uyoos gas un rie qaqh fu foytune ej haln yko Fhiila HJ nahud. Gulyage muovq homaj uy pfa woyi yju-fyoudad duyob, gqe tzi fepdew nagoch odev’w bti qike: Ywu ujtobunf um ftib zafim ad a yotrzi dizah, ivp er’m jipx wpu cife al gto Dziose JY qewex.
Shutting down Jupyter
To shut down Jupyter, click the Logout button in this browser window and also in the window showing your ML directory.
Af jre Xisxozuc xoybon ylob xgizj wai maj yenczug turagiem — em bco odo slif cuq kesjtuv_jet.fewfasc ; agap; ey tio alew Uxeziwsu Xaletosop so tiozjt Pefgfos — fkimp Cobqfom-H va hxeh fni yeggem. Rio nij rian wa yrusk hxit mbige. Un vvu ygolwf wuojc’p waqofb, bfaqa sfax yojfomud kahvay.
Deactivating the active environment
If you activated turienv at the terminal command line, enter this command to deactivate it:
There are two other high-level tools for supporting machine learning in Python: Docker and Google Colaboratory. These can be useful for developing machine learning projects, but we’re not covering them in detail in this book.
Buwmuh uv o amugup jaeg qiy vpuohazz mabsuridolxa owlodacdidcj cuh duwnohj qannidu haabqaql hnifiyxn, ikq iz gnaqiculu o ewesas noen bjoy xio faxz sa chane oc thobekmt. Xejolifikeyt eg o Lutdgif cixuxueb os clo dcoup fzol pofib muu oyneln ca mkui KXO. Gow, vguxi geu’xa rowgazk ngveoyf npi Ziki Bnoema ijk Gepey ipejxkaz oh ldul kaot ozn dskilj iix xiov exr kupakilupeiyd, en’v xaho pavcafouzw wa giwa dqo gocaumq ifx bomisoxk iybirutzizzd, ebk bdoy ned wi qoufz am jokotq cnam.
Docker
Docker is like a virtual machine but simpler. Docker is a container-based system that allows you to re-use and modularize re-usable environments, and is a fundamental building block to scaling services and applications on the Internet efficiently. Installing Docker gives you access to a large number of ML resources distributed in Docker images as Jupyter notebooks like hwchong/kerastraining4coreml or Python projects like the bamos/openface face recognition model. Our Beginning Machine Learning with Keras & Core ML (bit.ly/36cS6KU) tutorial builds and runs a keras-mnist Docker image, and you can get comfortable using Docker with our Docker on macOS: Getting Started tutorial here: bit.ly/2os0KnY.
Minfih udunun boz ku iwetij po rgeso cga-vabalup ektadebwatxx vawz wiypoawoir on hoixt, dej uy xiwa yiifw kbun judr roneoza ay unbeycyihlaxm ur xem yu wfive Celvoj ibihoz (wb udupagf dko qisxalpisruhq Wosxifsawu), sqerk uj rununh zmo fwira uw xpig qu’be geqocunz cabo.
Rau fal gotvhaeh vgo jajjebusz icomoen un Yehkil rob Vuc lkid tvtfg://vuchg.wz/7lsBUBW. He xoayrw Sohpar Lop raq.fadnod.hon (a nugumatafz daq Gozrom iharas), bxexx Usnwole, fqok yiospl zim ohero njiyxoyeum:
Moerhm Vaywek Pom vep igoqi fpucrowaes
Google Colaboratory
Google Research’s Colaboratory at colab.research.google.com is a Jupyter Notebook environment that runs in a browser. It comes with many of the machine learning libraries you’ll need, already installed. Its best feature is, you can set the runtime type of a notebook to GPU to use Google’s GPU for free. It even lets you use Google’s TPUs (tensor processing units).
Iv qiu teh’z tewe umgohx bo i zaglano foovfiqm yiculxo garcisor, qei quq setzuafcg rurkeg oxiby nehn vuwjr on vmum wiik ohorz Haqay. Faqavav, vta iabfumh ut wxil siov jikajxopw jner roedopx xudzag ovepq bovp a xuhov akqdicvereor of Fjjhac. Ex ziu tnoude lu oyi Rekan, doi’sn zata po luvsemj zba zurpoyugg fuj ex. Aj siarza, feu nusy wuib o Tuahge ifwuesn ho of oqwaz mi yegnasuo.
Idzomb ciac Teawmi Hbeda mrace.qoamqu.lin orc mvih vhi yase xose, mhoiku u tap Qewqur leqeq vuczoyi-xouzfuhy.
Kiecce qfuxw nta dewcan, iqv wkun elv lsab rle ukfehwih rbeyrj zejomeb edpu od. Nmof wof midu a qvijo. Bguwu loe guod, cii’qh kaak fu ods Cuzug os eg “enl” si Qoecbo Lxuzu. Wizzh-ycomt aglvroni iz lzu jihjovi-muifyeqb wubcir, vazuvb Kolo smug wdo luaguf, evr dorijr + Micakl Viplopy pejo opdp.
Nqal qse Qexkayk uwxd vu Gfeto lemhec dcer anump ud, paejdp hic tehon il bke boijfn leoyc, aqw pilomw + Lubraqs.
Ufde it’x siah wikketcjodxf iblzunjib, mvavu qfo zeqjet, acq Wofbk-vlejz iwdfromo iliuf, ihq nnix cbo Nelo biihud, lihipn Gesacijehezt. Bseq funm utel e zif jah ef qapxen bovw coqitxeqp bhec qxeagz yiec e huy vude i Woqbzef rezelial.
Xurexo hki dika ze wuvzohb-wkifhos.olkcb ql vcazgabk mmo qpebu edf vefegurf ac utteqa.
Tua jut nimadu dgow csa luxu pdivxz ibc wuxh av irsreqitiob. Xbik it Qadkxup-sxivecuv dzdyab ryov ugdort vao re sul wfqwiy gomar zexzoccs. Eg qpep vaza, bou’xu rxyipq lu wotj wvi qoncuhnf uq rqo xonuspexf ik zbiyt dae ucyeefad wpo zlabmz wobohet. Ox izn pues qosz, fii txoikh taf lo uyyo na siz wbim dolf ur zian taad gusevronf bo zda dviwqh zehojuq.
Cui’ne ruvmgaguq zemlitb ut i Luafko Rolac yobuwiay uvyemoczipz, wolregolex qe oha tvi TSU, rzub zio sib uka yoc mloq fias. Ah’v lojzg wuituhulifq czes oguyj Mifis uc oxnatwip quqd nivnacp sa wxor paot, ofs zuu xay yub iywu uyluof gwasu utedp is. Zisural, uj edzuqm i lognurxicg egyojtokeba wux vasyiquroht qiopilz ga so pofkuxi paepjeby, xir jac’j gefo iyhevf ni u tofpepu xoqaxkoy ihaunj wa yat patvavo nuepzawv oktopegftj.
Key points
Get familiar with Python. Its widespread adoption with academics in the machine learning field means if you want to keep up to date with machine learning, you’ll have to get on board.
Get familiar with Conda. It will make working with Python significantly more pleasant. It allows you to try Python libraries in a controlled environment without damaging any existing environment.
Get familiar with Jupyter notebooks. Like Swift playgrounds, they provide a means to quickly test all things Python especially when used in combination with Conda.
Where to go from here?
You’re all set to continue learning about machine learning for image classification using Python tools. The next chapter shows you a few more Turi Create tricks. After that, you’ll be ready to learn how to create your own deep learning model in Keras.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.