[REPRODUCCIÓ DE MÚSICA] DUSTIN TRAN: Hola. Dustin del meu nom. Així que vaig a presentaré Anàlisi de dades en R. Només una mica sobre mi. Actualment sóc un estudiant graduat en les Ciències de l'Enginyeria i Aplicades. Jo estudi una intersecció de aprenentatge automàtic i estadístiques Així, l'anàlisi de dades en R és realment fonamental per al Ho faig cada dia. I R és especialment bo per a l'anàlisi de dades perquè és molt bo per a la creació de prototips. I en general, quan estàs fent alguna mena d'anàlisi de dades, molts dels problemes van a cognitiva. I pel que només volen tenir la molt bona llenguatge que és només bo per fer funcions incorporades, en oposició a haver de bregar amb les coses de baix nivell. Així que en el principi, jo només vaig per introduir el que és R, per què que voleu utilitzar, i després anar per sobre en alguna demostració, i només ha d'anar d'allà. Llavors, què és R? R és només un llenguatge desenvolupat per al càlcul estadístic i la visualització. El que això significa és que és un llenguatge molt excel·lent per a qualsevol tipus de cosa que s'ocupa de incertesa o la visualització de dades. Així que tens tots aquests distribucions de probabilitat. No seran funcions incorporades. També tindràs excel·lent conspirar paquets. Python és un altre que competeixen idioma per a dades. I una cosa que em sembla que R és molt millor és la visualització. Així que el que vostè veurà a la demo com així és només un llenguatge molt intuïtiu que només funciona extremadament bé. També és lliure i de codi obert, com és un altre bon llenguatge suposo. I aquí, un munt de poc paraules clau llançat en vostè. És dinàmic, és a dir, si té una tipus específic assignat a un objecte del que només canviarà sobre la marxa. És mandrós, així que és intel·ligent sobre com ho fa càlculs. Funcionals, el que realment pot funcionar amb seu fora de funcions, per anything-- qualsevol tipus de manipulació que ets fent, es basa fora funcions. Així operadors binaris, per exemple, són funcions intrínsecament just. I tot el que que vas a fer és va a executar fora de si mateix funcions. I llavors orientat a objectes també. Així que aquí és una parcel·la XKCD. No només perquè em sento com XKCD és fonamental per a qualsevol tipus de presentació, sinó perquè Sento que això realment martells al punt que una gran part del moment en què vostè està fent algun tipus de dades anàlisi, el problema no és tant la rapidesa amb que s'executa, però quant de temps es va a el portarà a programar la tasca. Així que aquí és només analitzar si estratègia a o b és més eficient. Això serà cosa que ets va a tractar molt amb en tipus de llenguatges de baix nivell on vostè està tractant amb faltes seg, assignació de memòria, inicialitzacions, fins i tot fent les funcions incorporades. I això és manejat molt, molt elegant en R. Així que per martellejar aquesta punt, el major coll d'ampolla serà cognitiu. Així, l'anàlisi de dades és un problema molt difícil. Ja sigui que vostè està fent aprenentatge automàtic o ets fent només una mena de exploració de dades bàsiques, no vol tenir a prendre un document i després compilar cosa cada vegada que vol veure el que una columna s'assembla, el particular, les entrades en una matriu sembla. Així que només vull tenir alguna de les interfícies realment agradable pot executar una funció simple que els índexs al desitja i només executa des d'allà. I necessites domini llenguatges específics per a això. I R realment l'ajudarà a definir el problema i resoldre'l d'aquesta manera. Així que aquí és una mostra de programació trama popularitat del R com s'ha anat amb el temps. Així com vostè pot veure, com 2013 o de manera que només volat enormement. I això ha estat només per això gran tendència en la indústria de la tecnologia dades sobre grans. A més, no només la tecnologia indústria, però en realitat qualsevol que- indústria perquè moltes de les indústries són una espècie de fonamental tractant de resoldre aquests problemes. I en general, es pot tenir una mica de bona forma de mesurar aquests problemes o fins i tot la definició d'ells o resoldre'ls utilitzant les dades. Així que crec que en aquest moment R és l'11 més popular llenguatge de TIOBE i ha estat creixent des de llavors. Així que aquí està una mica més característiques de R. Té un enorme nombre de paquets i per totes aquestes coses diferents. Així que cada vegada que tingui un cert problema, la majoria el temps de R tindrà aquesta funció per a vostè. Així que si vostè vol construir una espècie de màquina algorisme d'aprenentatge anomenat Random Forest o arbres de decisió, o fins i tot tractant de prendre la mitjana de una funció o qualsevol d'aquestes coses, R haurà de. I si ho fas t'importa optimització, una cosa que és comú és que després que estiguis prototips acabat algun tipus de llenguatge d'alt nivell, vostè haurà de tirar en-- Vostè acaba de port que més del a un llenguatge de baix nivell. El millor de R és que una vegada que estàs fet de prototips, pot executar C ++, o Fortran, o qualsevol d'aquests els de nivell inferior directament en R. Així que aquesta és una realitat característica fresca sobre R, si realment es preocupen per el punt d'optimització. I també és molt bo per visualitzacions web. Així D3.js, per exemple, és Suposo altre seminari que presentem avui. I això és realment impressionant per fent visualitzacions interactives. I D3.js suposa que té algun tipus de dades que es pintaran i R és una gran manera de ser capaç de fer l'anàlisi de les dades abans d'exportar- a D3.js o simplement córrer Comandaments D3.js en si mateix R, així com tots aquests altres biblioteques també. Així que això va ser només la introducció de el que és R i per les que podria usar-lo. Així que espero, tinc vostè convençut d'alguna cosa sobre tractant de veure el que se sent. Així que vaig a seguir endavant i passar per alguns fonaments sobre els objectes R i el que realment es pot fer. Així que aquí és només una munt d'opcions matemàtiques. Així que dius you're-- vol construir mateix idioma i el que desitja tenir un munt de diferents eines. Qualsevol tipus d'operació que vostè pensa que li volem és més o menys estarà en R. Així que aquí és 2 més 2. Aquí és 2 cops pi. R té un munt de constants integrades que utilitzarà sovint com pi, i. I llavors, aquí és 7 més runif, per runif d'1. Aquesta és una funció que és genera 1 aleatòria uniforme de 0 a 1. I després hi ha 3 a la potència de 4. Hi ha arrels quadrades. Hi ha registre. Així que ingressi farà de base exponencial per si mateix. I després, si s'especifica un lloc, a continuació, vostè pot fer el base que desitgi. I llavors aquí hi ha alguns altres comandaments. Així que tens 23 mod 2. Llavors vostè té la resta. Llavors vostè té científica notació si també voler fer més just i les coses més complicades. Així que aquí està l'assignació. Assignacions tan típics en R es realitza amb una fletxa pel que és menys i després el guió. Així que aquí estic assignant 3 al val variable. I després estic imprimint val i després imprimeix 03:00. Per defecte en R intèrpret, que imprimirà les coses per a vostè pel que no ha d'especificar imprimir un val qualsevol moment que desitgi imprimir alguna cosa. Vostè només pot fer val i llavors va a fer això per vostè. A més, es pot usar és igual tècnicament com un operador d'assignació. Hi ha subtileses lleugeres entre l'ús de la fletxa operador i els iguals operador de les assignacions. Majorment per convenció, tothom s'acaba d'utilitzar l'operador fletxa. I aquí, estic assignant aquest notació obliqua diu 1 de còlon juny. Això genera un vector d'1 a 6. I això realment agradable perquè llavors que acaba d'assignar el vector de val i que funciona per si mateix. Així que això ja està passant d'un single-- una dada molt intuïtiu estructura de només un doble de algun tipus de tipus en un vector i que recollirà tots els valors escalars per a vostè. Així que després de passar d'escalar, que tenir objectes R i aquest és un vector. Un vector és qualsevol tipus de col·lecció del mateix tipus. Així que aquí hi ha un munt de vectors. Així que això és numèric. Numèric és manera de dir el doble de R. I així, per defecte, qualsevol nombre serà un doble. Així que si vostè té c de 1.1, 3, 5.7 negatiu, el c és una funció. Aquest concatena els tres nombres en un vector. I això va ser: el que si nota 3 per si mateix, que normalment s'assumeix que això és com un sencer, sinó perquè tots els vectors són del mateix tipus, Aquest és un vector de dobles o numèric en aquest cas. RNorm és una funció que genera variables-- normal estàndard o valors normals estàndard. I estic especificant dos d'ells. Així que estic fent RNorm 2, l'assignació que per desenvolupadors, i després estic imprimint desenvolupadors. Així que aquests són només dos valors normals aleatòries. I després intercepcions si ho fa vostè es preocupa per nombres enters. Així que això és només sobre la memòria assignació i estalvi de mida de la memòria. Així que hauria d'afegir els seus números de la capital L. En general, aquest és Notació històric de R per una cosa anomenada sencer llarg. Així que la majoria de les vegades, se li ser tractar amb dobles. I si alguna vegada ho farà més tard en optimitzar el codi, vostè pot afegir aquests L's després o durant ella si ets com premonitòria del que que vas a fer aquestes variables. Així que aquí és un vector de caràcters. Així que, de nou, estic concatenant tres cordes aquesta vegada. Observeu que les cadenes dobles i cordes soltes són els mateixos en R. Així que tinc arturo i de marvin etc. quan estic imprimir-lo, tots ells mostraran cordes dobles. I si també voleu incloure la cadena doble o individual en els seus personatges, llavors es pot o bé alternar les seves cordes. Així marvin de la segon element, és a dir va a show-- vostè només hi ha cordes dobles i després una sola cadena pel que aquest és altern. Altrament, si voleu utilitzar un doble operador de cadena en una doble cadena quan vostè està declarant que, a continuació, només ha d'utilitzar l'operador d'escapament. Així ho fa la doble cadena de barra invertida. I, finalment, també tenir vectors lògics. Així logical-- tan TRUE i la falsedat, i són serà majúscules. I llavors, un cop més, estic concatenant i després ells assignant a Bools. Així Bools mostrarà vostè TRUE, FALSE i TRUE. Així que aquí està la indexació vectoritzat. Així que, en principi, jo Estic prenent un function-- això es diu un sequence-- seqüència de 2 a 12. I jo estic prenent una seqüència per 2. Així que va a fer 2, 4, 6, 8, 10 i 12. I després, estic d'indexació per obtenir el tercer element. Així que una cosa a tenir en compte és que els índexs de R a partir de l'1. Així vals març donarà que el tercer element. Aquesta és una espècie de diferent d'altres idiomes en què s'inicia des de zero. Així que en C o C ++, per exemple, vostè és aconseguirà el quart element. I aquí hi ha el vals de 3 a 5. Així que una cosa que és realment genial és que vostè pot generar variables temporals dins i després només ha d'utilitzar sobre la marxa. Així que aquí és de 3 a 5. Així que estic generant un vector 3, 4, i 5 i després Estic indexació d'aconseguir el tercer, quart, i el cinquè element. Així mateix, pot abstracta que això només ho fan qualsevol tipus d'un vector que et dóna la indexació. Així que aquí està el vals i després el primer, tercer i sisè elements. I després, si vols fer un complement, pel que acaba de fer el signe menys després i que va a et donarà tot el que no és el primera, tercera, sisena o element. Així que aquest serà 4, 8, i 10. I si vostè vol aconseguir encara més avançada, pot concatenar vectors de Boole. Així que aquest índex es va a donar aquest vector booleà de longitud 6. Així representant TRUE coma març. Això es repetirà VERITABLES tres vegades. Així que això et donarà TRUE, TRUE, TRUE vector. rep FALS 4-- això es va a donar un vector de FALS, FALS, FALS, FALS. I llavors c va a concatenar aquests dos booleans junts. Així que vas a aconseguir tres Veritables i després quatre falses. Així que quan vostè vals índex, ets va a obtenir el TRUE TRUE, TRUE ,. Així que dirà que sí, Vull que aquests tres elements. I després FALS, FALS, FALS, FALS va dir que no, no vull aquests elements pel que no va a tornar-los. I suposo que en realitat hi ha un error tipogràfic aquí perquè això ja és dir repetició TRUE 3 i repetir FALS 4, i tècnicament, que només tenen sis elements per repeteixen FALSE, que hauria de ser repetida FALS 3. Crec que R es prou intel·ligent com que si només especifica 4 aquí, llavors que ni tan sols l'error fora. S'acaba de donar-li aquest valor. Així que només vaig a ignorar aquest quart FALS. Així que aquí està l'assignació vectoritzat. Així set.seed-- això només estableix el llavor per nombres pseudoaleatoris. Així que estic establint que la llavor 42, el que significa que si gènere 3 aleatòria normal valors i, a continuació, si run set.seed pel seu compte equip amb el mateix valor de 42, llavors vostè també aconsegueix el mateixos tres normals aleatòries. Així que això és realment bo per a la reproductibilitat. En general, quan estàs fent alguna cosa de tipus d'anàlisi científica, que es vol establir la llavor. D'aquesta manera altres científics poden simplement reproduir exactament el mateix codi que has fet perquè tindran l'exacta mateixes variables aleatòries que-- o l'atzar valors que ha pres cap a fora també. I així, l'assignació vectorizada aquí està mostrant el vals 1-2. Per tant, pren els dos primers elements de vals i després els assigna a 0. I després, també pot simplement fer el una cosa similar amb els Booleans. Així vals no és igual a 0-- aquesta voluntat donar-li un FALS vector, FALSE, TRUE en aquest cas. I després, que va a dir res dels índexs que fos cert, llavors va a assignar aquesta a 5. Per tant, pren el tercer element aquí i després ho assigna a 5. I això és realment agradable en comparació amb els llenguatges de baix nivell on has de fer servir els bucles fer totes aquestes coses vectorizada perquè només és molt intuïtiu i és un sol d'una sola línia. I el que és bo de notació vectorizada és que en R, aquests són una mena de incorporat perquè estiguin gairebé tan ràpid com fer en un llenguatge de baix nivell que en comptes de fer un bucle en R i després haver de fer la pròpia indexació dinàmica. I que serà més lent que fer aquest tipus de coses vectorizada on pot fer-ho en paral·lel, on ho està fent en el roscat bàsicament. Així que aquí està vectoritzat operacions. Així que estic generant un valor d'1 a 3, l'assignació que a vec1, 3 a 5, vec2, sumant. Les afegeix components sabia el es 1 més 3, 2 més 4, i així successivament. vec1 vegades vec2. Això multiplica els dos valors dels components savi. Així que és 1 Temps 3, 2 vegades 4, i després 3 vegades maig. I després, de manera similar es pot també fer comparisons-- comparacions lògiques. Així que és FALS VERTADER FALS en aquest cas perquè 1 no és més gran que 3, 2 no és major que 4. Això és, suposo, un altre error tipogràfic, 3 definitivament no és superior a 5. Sí. I el que només pot fer tot aquestes operacions simples perquè la seva heretat dels propis classes. Així que això va ser només el vector. I això és una espècie de la més fonamental R objecte perquè donat un vector, vostè pot construir objectes més avançats. Així que aquí està una matriu. Aquesta és essencialment l'abstracció del que és en si mateixa una matriu. Així que en aquest cas, és tres diferents vectors, on cada un és una columna, o es pot considerar que ja que cada un és una fila. Així que estic emmagatzemar una matriu d'1 a 9 i després estic especificant 3 files. Així 1-9 li donarà un vector 1, 2, 3, 4, 5, 6, i tot el camí a 9. Una cosa a tenir en compte és que Botigues R valors en format de columna principal. Així, en altres paraules, quan veus 1 a 9, que va a emmagatzemar ells-- que serà 1, 2, 3 a la primera columna, i després que farà 4, 5, 6 a la segona columna, i després 7, 8, 9 a la tercera columna. I aquí estan alguns altres funcions comuns que es poden utilitzar. Així tènue estora, això li donarà les dimensions de la matriu. Se't tornarà un vector de la dimensió. Així, en aquest cas, perquè la nostra matriu és de 3 per 3, que va a donar-li una vector numèric que hi ha 3 mar. I aquí s'acaba mostrant la multiplicació de matrius. Així que en general, si només fem asterisk-- tan estora asterisc mat-- això serà operació de component sàvia o el que es diu el producte de Hadamard. Així que va a fer cadascun element component es refereix. No obstant això, si vols multiplication-- matriu de manera que la multiplicació dels primers temps de fila primera columna de la segona matriu de i així en-- usaries aquesta operació per cent. I t de estora és només una operació de transposició. Així que estic dient prendre la transposada a la matriu, es multiplica per la matriu si mateix. I després es va a tornarà a vosaltres una altra 3 per 3, que mostra la matriu el producte que t'agradaria. I pel que va ser la matriu. Això és el que s'anomena una trama de dades. Una trama de dades que es pugui imaginar com una matriu, però cada pròpia columna serà d'un tipus diferent. Llavors, què és realment bo de dades marcs és que en l'anàlisi de dades en si, tindràs tot això dades heterogènies i tot això realment coses brutes en què cadascuna de les columnes per si mateixos poden ser de diferents tipus. Així que aquí estic dient a crear un trama de dades, fer sencers d'1 a 3, i després també tenir un vector de caràcters. Així que pot indexar a través cadascuna d'aquestes columnes i després vaig a aconseguir els propis valors. I també es pot fer algun tipus d'operacions en trames de dades. I la majoria de les vegades quan estàs fer anàlisis de dades o algun tipus de processament previ, podràs treballar amb aquestes estructures de dades on cada columna es va a ser d'un tipus diferent. Finalment, pel que aquests són essencialment només els quatre objectes essencials en Llista R. s'acaba de recollir qualsevol altres objectes que et volen. Per tant, emmagatzemarà aquesta en un variable que es pot accedir fàcilment. Així que aquí, estic prenent una llista. Estic dient coses és igual a 3. Així que vaig a tenir un element en la llista, i això es diu matèria, i que tindrà el valor 3. També puc crear una matriu. Així que aquest és 1 a 4 i la fila final és igual a 2, per la que un 2 per 2 matriu. També a la llista i es diu estora. moreStuff, una cadena de caràcters, i fins i tot una altra llista en si mateix. Així que aquesta és una llista que és 5 i l'ós. Per tant, té el valor 5 i té l'ós cadena de caràcters i és una llista dins d'una llista. Així que vostè pot tenir aquests coses recursius on vostè té una another-- escrigui dins del tipus. Similarment, es pot tenir una matriu dins d'una altra matriu i així successivament. I la llista és només una bona manera de recopilar i afegir tots aquests diferents objectes. I, finalment, aquí s'acaba d'ajudar en cas això només s'havia anat molt ràpidament. Així que cada vegada que vostè està confós sobre algun tipus de funció, vostè pot fer ajuda d'aquesta funció. Així que vostè pot fer matriu ajuda o una matriu de signe d'interrogació. I ajuda i el signe d'interrogació són només l'abreviatura de la mateixa cosa pel que són els àlies. lm és una funció que només ho fa un model lineal. Però si només tens idea del que obres, simplement pots fer ajuda de lm i que li donaré alguns tipus de documentació que es veu com una mena de pàgina de manual en Unix, on vostè té una breu descripció del que ho fa, també ho són els seus arguments, el que torna, ja només consells sobre com per usar-lo, i alguns exemples també. Així que m'ho dius a mi anar endavant i espectacle alguns de demostració de l'ús de R. D'acord. Així que vaig ser molt ràpidament només les dades estructures i algun tipus de la op-- algunes de les operacions. Heus aquí algunes funcions. Així que aquí només vaig per definir una funció. Així que jo també estic fent servir operador d'assignació aquí, i després que estic dient La declararem com una funció. I pren el valor x. Així que això és qualsevol valor que vulgueu i vaig a tornar x si mateix. Així que aquesta és la funció identitat. I el que és bo d'això en comparació amb altres idiomes i una altra de baix nivell idiomes és que x pot ser de qualsevol tipus en si i que va a tornar aquest tipus. Així que vostè pot imagine-- així que anem m'acaba de córrer així de ràpid. Ho sento. Així que una cosa he de dir també és que aquest editor que estic fent servir es diu rstudio. Això és el que s'anomena un IDE. I una cosa que és realment bo d'això és que incorpora una gran quantitat de la coses que volen fer a R per si mateix només molt intuïtiva. Així que aquí és una consola d'intèrpret. Així mateix, també es pot obtenir aquesta consola prima només per fer un R. de capital I això és exactament el el mateix que la consola. Així que només puc fer Identificació funció x, x, x. I llavors-- i després que estarà bé en si. Així rstudio és gran perquè té la consola. També té els documents desitja executar en. I llavors té algunes variables que es pot veure en els ambients. I llavors, si vostè té fer parcel·les, llavors vostè només pot veure-ho aquí, en lloc de la gestió de tots aquests diferents finestres per si mateixos. En realitat, jo personalment ús Vim, però jo sentir-se com rstudio és excel·lent just per aconseguir una bona idea de com utilitzar R. En general, quan vostè està tractant de aprendre una tasca nova, vostè no desitja utilitzar massa coses alhora. Així que R és només un rstudio very-- és una molt bona manera d'aprendre R sense haver de lidiar amb totes aquestes altres coses. Així que aquí estic d'aneu corrent hola. Retorna hola. Identificació del 123. Aquí és un vector d'enters. Així que de la mateixa manera, perquè es pot prendre cap algun tipus de valor, vostè pot fer tornar Identificació x de manera que retorna 1,234 i 5. I permetin-me que mostren que això és de fet un nombre sencer. I de la mateixa manera, si ho fa la classe Identificació del x, que serà un nombre enter. I després, també pot comparar els dos i és veritat. Així que estic comprovant si Identificació de x és igual és igual a x i notificació que et dóna dues Veritables. Així que això no està dient són els dos objectes idèntics, però són cadascuna de les entrades dins els vectors idèntics. Aquí és bounded.compare. Així que això és una mica més complicat en què té una si la condició i altres i després només cal un arguments alhora. Així que x és de qualsevol tipus. I jo estic dient això segon argument és un. Això pot ser qualsevol cosa així. Però per defecte, que prendrà 5 si no s'especifica res. Així que aquí vaig a dir si x és més gran que a. Així que si no específic 1, que diu que si x és més gran que 5, llavors vaig a tornar TRUE. una altra cosa, vaig a tornar FALSE. Així que m'ho dius a mi anar endavant i defineixo això. I ara vaig a executar bounded.compare 3. Així que el que diu és 3 menys no sigui: 3 és major que 5. No, no és tan FALS. I bounded.compare 3 i vaig per comparar usant a és igual a 2. Així que ara estic dient que sí, ara em volen un ésser altra cosa. Així que vaig a dir una, ha de ser 2. Puc o fer aquest tipus de notació o em diuen que a és igual a 2. Aquesta és una més llegible que quan estàs mirant aquests realment funcions complicades que prendre arguments-- múltiple i aquest pot haver dotzenes oftentimes-- dient A és igual a 2, és més fàcil de llegir per vostè perquè més endavant en el futur vostè sabrà el que estàs fent. Així que en aquest cas, estic dit és 3 superior a 2. Sí que ho és. I de la mateixa manera, jo només puc treure això i dir, és més gran que 3 2 on a és igual a 2. I això també és cert. Sí? AUDIÈNCIA: És vostè executar línia per línia? DUSTIN TRAN: Sí, ho sóc. Així que el que estic fent aquí és tenint aquest text document-- i el bo de rstudio és que Jo només puc córrer una short-- una tecla d'accés directe. Així que estic fent Control-Enter. I llavors, m'estic prenent el línia en el document de text i després posar a la consola. Així que aquí estic dient, bounded.compare i estic fent Control-X. Així que només puc fer funcionar aquí també. I després que prendrà la línia i després el va posar aquí. I a continuació, de manera similar, que pugui fer funcionar aquí. I llavors, només mantenir la definició les línies a la consola com això. I si també nota l'arrissat claus són allà com en sintaxi C. x-- si la si la condició és també utilitzarà parèntesi i després pot utilitzar més. Una altra és una altra cosa si. Així que això serà x és igual a és igual a, per exemple. I després vaig a tornar alguna cosa aquí. Observeu que hi ha dos diferents coses aquí que està passant. Una és que aquí estic especificant tornar el valor TRUE. Aquí només estic dient x. Així R farà normalment per defecte prendre l'últim arguments-- o prendre l'última línia del codi, i això serà el que es retorna. Així que aquí es tracta de la mateixa cosa com prémer retorn x. I només per mostrar. I després, va a treballar com si res. Així que permetin-me seguir amb això. Així la resta si. I de veritat, puc tornar qualsevol cosa que m'agradaria. Així que no tenen ni tan sols per retorn booleans tot el temps, Puc torna una altra cosa. Així que jo puc fer l'ós de retorn. Així que si x és igual a és igual a, que tornarà ós. En cas contrari, va a tornar TRUE. També puc fer un vector o realment res. I normalment en forma estàtica idiomes mecanografiades, caldria especificar un tipus aquí. I noti que només pot ser qualsevol cosa. I R és prou intel·ligent que s'acaba de fer això i no tindran cap problema. Així que permetin-me definir això. Unexpected-- oh ho sento. Ha de ser una clau aquí. D'acord. Fresc. Bé. Així que ara anem a comparar 3 i a és igual a 3. Així que hauria return-- yeah-- l'ós valor. Així que ara una cosa més general és com Què hi ha d'altres estructures de dades. Pel que té aquesta funció. Això va a treballar en qualsevol tipus de valor com 3 o qualsevol numèric, en altres paraules, doble. Però què passa amb una mena vector. Llavors, què passa si vostè fer-- així que estic va a assignar val a, per exemple, de 4 a 6. Així que si torno això, això és un vector de 4, 5, 6. Ara anem a veure què passa si ho faig bounded.compare val. Així que això donarà 15 1251. Així, en altres paraules, que està dient si ens fixem en aquesta condició pel que diu x és menor que una o alguna cosa així. Així que aquest és lleugerament confús perquè ara vostè simplement no sap el que està passant. Així que suposo que una cosa que és veritat bé sobre tractant de depuració és que vostè només pot fer val és més gran que una i veure què passa allà. Així val-- a és per defecte 5, així anem a Do Val superior a 5. Així que aquest és un FALS FALS vector TRUE. Així que ara, quan vostè està buscant en això, que dirà si, i llavors va a donar-li aquest és un vector de FALS VERITABLE FALS. Així que quan passi això en R, R no té idea del que estàs fent. A causa que s'espera una sola valor, que és un valor booleà, i ara vostè està donant un vector de booleans. Així que per defecte, R és només dirà què diables, Vaig a suposar que vostè és Va a prendre el primer element aquí. Així que vaig a dir-- vaig assumir que això és fals. Així que dirà no, això no és correcte. De la mateixa manera, es va a val és igual a ser igual a a. No, ho sento maig. I també serà falsa també. Així que dirà que no, No és veritat, així pel que és tornarà aquest últim. Així que això és ja sigui bo o dolent cosa, depenent de com s'ho miri. Perquè quan estàs la creació d'aquestes funcions, que en realitat no sap el que està passant. Així que de vegades t'agradaria un error, o potser el que desitja és una advertència. En aquest cas, R no fa això. Així que és realment fins en base fora del Creus que l'idioma de fer en aquest cas si es passa en un vector de booleans quan estàs fent un if condició. Així que anem a dir que vostè tenia l'original un amb if else return TRUE i ja està va a tornar FALSE. Així que una manera d'abstreure això és per dir que ni tan sols necessiten aquesta cosa condicional. Una altra cosa que puc fer és només la devolució dels mateixos valors. Així que si et fixes, si Do Val és més gran que 5, això va a tornar un vector FALS VERDADER FALS. Potser això és el que desitjar per bounded.compare. Tu vols tornar un vector de booleans on es compara cada un dels valors a si mateixos. Així que només puc fer bounded.compare funció de x, a és igual a 5. I a continuació, en lloc de fer aquesta condició més si, Jo només vaig a tornar x és major que 5. Així que si és cert, llavors que va a tornar TRUE. I després, si no ho és, és va a tornar FALSE. I això funcionarà per qualsevol d'aquestes estructures. Així que puc bounded.compare c juny 1 o 9 i després em vaig a dir a és igual a 6, per exemple. I després es va a li donarà el dret de Boole vector que estàs dissenyant. Així que aquests són només funcions i ara permetin-me mostrar alguns elements visuals interactius. No crec que realment tinc Wi-Fi aquí així que m'acabo d'anar per davant i evita aquest suposo. Però una cosa que és genial però, és que si només que desitgi provar un munt de diferents comandaments de dades, hi ha un munt de diferents conjunts de dades que ja estan precarregats en R. Així que un d'ells és anomenat el conjunt de dades de l'iris. Aquest és un dels més ben coneguda els d'aprenentatge automàtic. En general, acaba de fer algun tipus de casos de prova per veure si el seu codi s'executa. Així que anem a comprovar el iris és. Així que aquesta cosa va ser una trama de dades. I que és una mica llarg perquè Acabo imprimir Sant Martí. Està imprimint tota la cosa. Així que té tots aquests noms diferents. Així iris és una col·lecció de flors diferents. En aquest cas, s'està dient que les espècies de la mateixa, tots aquests diferents amplades i longituds del sèpal i el pètal. I pel que normalment, si que voleu imprimir Sant Martí, per exemple, no vol haver de fer tot això perquè això pot fer-se càrrec de tota la consola. Així que una cosa que és realment agradable és la funció de cap. Així que si vostè acaba de fer el cap Sant Martí, això li donarà les primeres cinc files o sis suposo. I llavors bé, només pot especificar aquí. Així 20-- això li donarà que les primeres 20 files. I jo en realitat era una mena sorprès que aquest em va donar sis així que em vaig a continuació i comprovar iris-- o el cap, ho sento. I aquí se li donarà que la documentació del que fa el cap de valor. Així que retorna el primer o l'última d'un objecte. I després vaig a mirar als valors predeterminats. I després diu el predeterminat mètode cap x i n és igual a 6 l. Així que això torna els primers sis elements. I de la mateixa manera, si vostè nota aquí, no ha d'especificar n és igual a 6. Per defecte s'utilitza 06:00, suposo. I llavors, si vull especificar un cert valor, llavors puc veure això també. Així que això és alguns comandaments simples i aquí hi ha una altra que és sol-- bé, Jo can-- això és en realitat una mica més complex, però això acaba de prendre la classe de cada columna del conjunt de dades de l'iris. Així que això li mostrarà el que cada un d'ells columnes són en termes dels seus tipus. Així longitud sèpal és numèric, ample sèpal és numèric. Tots aquests valors són només numèric perquè es pot deduir d'aquestes dades estructurar aquests són tot va a numèric. I la columna de l'Espècie serà un factor. Així que normalment, es podria pensar que això és com una cadena de caràcters. Però si només fem irisSpecies, i després em vaig a fer el cap 5, i això va a imprimir els cinc primers valors. I a continuació, observi aquests nivells. Així que això és dient-- aquesta és la forma de R de tenir les variables categòriques. Així que en lloc de només amb cadenes de caràcters, té nivells especificant quina d'aquestes coses són. Així que diguem que irisSpecies 1. Així que el que vull fer aquí és que estic subconjunts d'aquesta columna Espècies. Així que això pren la La columna Espècies i després índexs per obtenir el primer element. Així que això ha de donar setosa. I també et dóna els nivells aquí. Així que vostè pot comparar també això a la setosa caràcter i això no va és cert perquè un és d'un tipus diferent que l'altre. O suposo que és veritat perquè R és més intel·ligent que això. I mira això i després diu, potser això és el que vols. Així que dirà el caràcter setosa cadena és la mateixa com aquest. I a continuació, de manera similar, es pot També acaba d'agafar aquests com així successivament. Així que això és només una espècie de ordres ràpides del conjunt de dades. Així que aquí està una mica d'exploració de dades. Així que això és una mica més involucrat amb l'anàlisi de dades. I això es pren d'alguns bootcamp en R a Berkeley. Així biblioteca estrangera. Així que vaig a carregar en un biblioteca que es diu estrangera. Així que això em donarà read.dta així assumir que tinc aquest conjunt de dades. Aquest s'emmagatzema en el corrent directori de la meva consola de treball. Així que anem a veure què el directori de treball és. Així que aquí està la meva directori de treball. I llegir dades de punts, aquesta cosa, està dient aquest fitxer es troba a la carpeta de dades de aquest directori de treball actual. I això no és read.dta una ordre predeterminat. Suposo que m'ho vaig carregar a ja. IEI va assumir vaig carregar això ja. Però fins read.dta no va ser una ordre predeterminat. I és per això que vas a tenir carregar en aquesta biblioteca package-- aquest paquet de flama exterior. I si vostè no té el paquet, crec estranger és un dels més integrats. En cas contrari, també pot fer install.packages i això va a instal·lar el paquet. I això li donarà R. Uh, no. I llavors jo només vaig a deixar de això perquè ja el tinc. Però el que és realment bo de R és que la gestió de paquets sistema és molt elegant. Perquè va a emmagatzemar tot molt bé per a vostè. Així que en aquest cas, es va a emmagatzemar a, crec, aquesta biblioteca aquí. Així que cada vegada que desitgi instal·lar nous paquets, és tan simple com fent install.packages i R gestionarà tot els paquets per vostè. Així que vostè no ha de fer alguna cosa en Python, on vostè té el paquet extern gerents com el paper Anaconda on estiguis doing-- instal·lar el paquets externs a Python i després intenta executar per si mateix. Així que aquesta és molt bona manera. I install.packages requereix Internet. Es necessita d'un servidor i el dipòsit que recull totes les paquets és CRAN. I vostè pot especificar quin tipus de mirall vol descarregar els paquets. Així que aquí estic prenent aquest conjunt de dades. Ho estic llegint en l'ús d'aquesta funció. Així que m'ho dius a mi anar endavant i fer això. Així que anem a suposar que vostè té aquest conjunt de dades i vostè no té absolutament ni idea del que és. I aquesta realitat sorgeix amb força freqüència en la indústria en el qual només té aquests tones i tones de coses desordenades i són increïblement sense etiqueta. Així que aquí tinc aquest conjunt de dades i no sé el que és, així que estic sol mostrant a comprovar-ho. Així que em vaig a fer el cap primer. Així que puc comprovar els primers sis columnes del que aquest conjunt de dades és. Així que aquest és l'estat, pres04, i després tots aquests diferents tipus de columnes. I el que és interessant aquí, suposo, és que vostè assumiria que això es veu com una mena d'elecció. I suposo que només des veient l'arxiu nomenar això és una espècie de col·lecció de les dades sobre els candidats o electors que va votar pels presidents específics o candidats presidencials per a les eleccions de 2004. Així que aquí està els valors 1, 2 així que una forma d'emmagatzemar els candidats presidencials són els seus noms. En aquest cas, sembla que són valors només sencers. Així 2004, era Bush davant Kerry que jo crec. I ara, anem a dir que simplement no sap si 1 correspon a Bush o 2 correspon a Kerry o i etc., etc., no? I això és, només per a mi, un problema bastant comú. Llavors, què es pot fer en aquest cas? Així que anem a veure totes aquestes altres coses. estat, estic assumint aquest prové de diferents estats. PartyID, ingressos. Vegem PartyID. Així que potser una cosa que pots fer és mirar a cadascuna de les observacions que tenen un PartyID del republicà o demòcrata o alguna cosa així. Així que anem a veure en què PartyID és. Així que em vaig a prendre dat i després em vaig Per a això el signe de dòlar operador que vaig fer anteriorment i això va a subconjunt a aquesta columna. I després em vaig a dirigir això en 20, només per veure com es veu. Així que això és només un munt d'AN. En altres paraules, vostè té falten dades sobre aquests nois. Però també s'observa aquest dat PartyID és un factor pel que aquest li dóna diferents categories. Així, en altres paraules, PartyID pot prendre Demòcrata, republicà, independent, o alguna cosa més. Així que seguirem endavant i que anem veure quin d'aquests és-- oh, OK. Així que vaig al subconjunt a PartyId i després miren quins són Demòcrata, per exemple. Això va a donar-li un booleà, una enorme booleà de trues i falses. I ara, anem a dir que vull al subconjunt d'aquests nois. Així que això va a portar el meu dat i subconjunt a qualsevol observacions tenen iguals PartyId iguals demòcrata. I això és molt llarg perquè hi ha tants d'ells. Així que ara, em vaig a dirigir això en 20. I com t'adones, és igual als iguals és interessant que ets ya-- vostè també està inclosa l'AN. Així que en aquest cas, encara no pot aconseguir qualsevol informació perquè ara tens AN i el que desitja és veure quin dels observació correspon al demòcrata i no falten aquests mateixos valors. Llavors, com desfer-se d'aquests AN? Així que aquí estic fent servir la clau en la meva cursor i llavors dient moure. I llavors aquí només vaig dir is.na datpartyid. Així que això i ja tindrà dos vectors diferents booleanes i dir que serà VERITABLE i FALS per exemple. Així que va a fer aquest component es refereix. Així que aquí estic dient presa la trama de dades, subconjunt als que corresponen a Democrat, i eliminar qualsevol d'ells que no són NA. Així que això ha voluntat-- donar-li alguna cosa. Vegem is.na. Provem datpartyid is.na. I això ha de donar usted-- sorry-- només un vector booleà. I després, perquè és molt llarg, Vaig a un subconjunt de 20. D'acord. Així que això hauria de funcionar. I aquest també serà Veritables. Ah, així que el meu error aquí és que jo-- jo utilitzen C ++ i R indistintament pel que fan aquest error tot el temps. L'operador i és en realitat el que vostè desitja. No vol utilitzar dues els símbols d'unió, només un de sol. D'acord. Així que anem a veure. Així que subestablecida a la PartyID on estan demòcrata i no hi ha els valors perduts. I ara anem a veure quines van votar. Així que sembla que la majoria d'ells van votar per 1. Així que vaig a seguir endavant i dir que és Kerry. I de la mateixa manera, es pot També anar a Republicà i és d'esperar, això ha de donar 2. És només un munt de diferents columnes. I, en efecte, és 2. Així PartyId tot republicà, la majoria d'ells estan votant per 2. Així que sembla, només al veure això, Republicà serà 1 very-- o la PartyID serà una molt factor important en la determinació de quin dels candidats que estan anar a votar. I això és òbviament cert en general. I això coincideix amb el seu intuïció, és clar. Així que sembla que sóc acabant el temps ho m'ho dius a mi només hauria de seguir endavant i mostrar algunes imatges ràpides. Així que aquí hi ha alguna cosa que és lleugerament més complicada amb la visualització. Així doncs, en aquest cas, aquest és un molt simple anàlisi de simplement comprovar el el president del '04 és. Així que en aquest cas, diguem que vostè volgut respondre a aquesta pregunta. Així que suposem que volíem saber la votació comportament en les eleccions de president 2004 i com això varia segons la raça. Així que no només és el que vols veure el comportament dels votants, però desitja subconjunt de cada raça i espècie de resum que. I només es pot dir per aquesta notació complexa que això és una espècie d'aconseguir nebulós. Així que un dels més avançats d'I paquets que també classe de recent es diu dplyr. Pel que és aquesta d'aquí. I ggplot2 ggg-- és només un bonic manera de fer les millors visualitzacions que l'incorporat. Així que vaig a carregar aquestes dues biblioteques. I llavors, em vaig a anar endavant i executar aquesta comanda. Vostè només pot tractar això com un quadre negre. El que passa és que aquesta canonada operador està passant en aquest argument en aquí. Així que estic dient grup de dat la raça i el llavors president 04. I després, tots aquests altres ordres estan filtrant i després resumir on jo estic fent recompte i llavors estic traçant aquí. Acceptar fresc. Així que seguirem endavant i veure l'aspecte que té. Llavors, què està passant aquí és que jo només tracen cadascuna de les carreres i després quines van votar. I aquests dos diferents valors corresponen a 2 i 1. Si vols ser més elegant, també pot Només especifiqui que 2 és Kerry-- o 2 és Bush, i després 1 és Kerry. I també es pot tenir que en la seva llegenda. I també es pot dividir aquests gràfics de barres. Perquè una cosa és que, si et fixes, això no és molt fàcil d'identificar Quin d'aquests dos valors són més grans. Així que una cosa que t'agradaria fer és prendre aquest àrea blava i acaba de passar per aquí, així que Podem comparar aquests dos de costat a costat. I crec que això és una cosa que no tenen temps per fer-ho en aquest moment, però això és també molt fàcil de fer. Vostè pot simplement mirar les pàgines del manual d'ggplot. Així que només puc fer ggplot com això i llegir en aquesta pàgina de manual. Així que permetin-me ràpidament mostrar algunes coses interessants. Seguirem endavant i anar A-- només una aplicació d'aprenentatge automàtic. Així que anem a dir que tenim aquests tres paquets, així que vaig a carregar aquests a. Així que això acaba d'imprimir una mica de informació després vaig carregar a la cosa. Així que jo estic dient això read.csv, aquest conjunt de dades, i ara Vaig a seguir endavant i mirar i veure el que hi ha dins d'aquest conjunt de dades. Així que les primeres 20 observacions. Així que només tinc X1, X2 i Y. Per tant, sembla com un munt d'aquests valors es van des potser 20 a 80 o així. I llavors de manera similar per X2 i després I aquest sembla ser etiquetes de 0 i 1. Per comprovar això, puc només ho fan les dades de resum X1. I llavors de manera similar per totes aquestes altres columnes. Així resum és una forma ràpida de el que mostra als valors ràpids. Oh, ho sento. Aquest ha de ser Y. Així que en aquest cas, fa la quantils, mitjanes, Maxes també. En aquest cas, dataY, es pot veure que només serà 0 i 1. També la mitjana està dient 0.6, només significa que es sembla que tinc més que 1s 0s. Així que m'ho dius a mi anar endavant i espectacle el que això sembla. Així que només vaig a graficar aquesta. Anem a veure com esborrar això. Oh D'acord. D'acord. Així que això és el que sembla. Així que sembla que els grocs vaig especificar com 0, i després vermell vaig especificar com 1s. Així que aquí es veu com punts d'etiqueta i es sembla que només volia una mica de tipus d'agrupació en això. I permetin-me seguir endavant i espectacle que algunes d'aquestes funcions incorporades. Així que aquí està lm. Així que això és només tractar per ajustar una recta a això. Llavors, ¿quina és la millor manera que puc encaixar aquesta línia que serà millor separar aquest tipus d'agrupació. I l'ideal és que només pot veure que jo només corro tots aquests comandaments i després, vaig endavant i afegir la línia. Així que això sembla la millor conjectura. Es tracta de prendre la millor que minimitza l'error en tractar d'encaixar aquesta línia. Òbviament, això sembla una mica bo, però no és la millor. I els models lineals, en en general, seran realment gran per a la teoria i només una espècie dels fonaments bàsics de la màquina l'aprenentatge. Però en la pràctica, vostè va a voler fer alguna cosa més general. Pel que només pot intentar executar cosa que es diu una xarxa neural. Aquestes coses són cada vegada més comú. I simplement funcionen fantàsticament per a grans conjunts de dades. Així que en aquest cas, només tener-- anem a veure-- tenim nrow. Així nrow és només dir el nombre de files. Així que en aquest cas, té 100 observacions. Així que m'ho dius a mi anar endavant i fer una xarxa neural. Així que això és realment agradable perquè puc només dir NNET i després em regressió I. Així que el I és que la columna. I a continuació, en la regressió les altres dues variables. Així que aquest és més curt notació per X1 i X2. Així que seguirem endavant i executar aquest. Oh, ho sento. Necessito funcionar tot això. I això és només la impressió de notació per la rapidesa o no ràpidament convergit. Així que sembla que no convergeixen. Així que m'ho dius a mi anar endavant i d'impressió el que això sembla. Consulti aquí hi ha la imatge i aquí és un nivell que mostra el bé que encaixa. I això és sol-- es pot veure això que això és molt, molt agradable. Fins i tot podria ser sobreajust, però vostè pot també explicar això amb una altra tècniques com la validació creuada. I aquests també es construeixen en R. I permetin-me mostrar suport de màquines de vectors. Aquesta és una altra realitat comuna tècnica d'aprenentatge automàtic. És molt similar als models lineals, però utilitza el que s'anomena un mètode nucli. I anem a veure el bé que ho fa. Així que aquest és molt similar a com així una xarxa neuronal realitza, però és molt més suau. I això es basa apagat de què-- com el treball SVM. Així que això és només una molt visió ràpida general de les funcions incorporades que pot fer i també alguns de l'exploració de les dades. Així que permetin-me seguir endavant i tornar a les diapositives. Així que, òbviament, això és no molt àmplia. I això és realment només un teaser que li mostra el que pot fer realment a R. Així que si vostè acaba de voler per aprendre més, aquí són un munt de diferents recursos. Així que si ets aficionat als llibres de text o ets simplement aficionat a llegir coses en línia, llavors aquest és un fantàstic un per Hadley Wickham, qui també va crear tots aquests paquets molt interessants. Si ets aficionat als vídeos, a continuació, Berkeley té una impressionant bootcamp això és several-- això és una mica llarg. I que li ensenyarà gairebé tot el que vostè vol saber sobre R. I de la mateixa manera, no hi ha Codeacademy i tot això una altra classe llocs web d'interactius. Ells també estan rebent common-- més i més comú. Així que aquest és molt similar a Codeacademy. I, finalment, si només vull Comunitat i ajudar, aquests són un munt de coses que vostè pot anar. Òbviament, encara utilitzar llistes de distribució, només com gairebé tots els altres comunitat llenguatge de programació. I #rstats, això és la nostra comunitat de Twitter. Això és en realitat bastant comú. I llavors l'usuari! És només la nostra conferència. I després, per descomptat, vostè pot utilitzar totes aquestes altres coses de preguntes i respostes, com desbordament de la pila, Google, i després GitHub. A causa de que la majoria d'aquests paquets i gran part de la comunitat se centrarà en el desenvolupament de codi perquè és de codi obert. I és realment agradable a GitHub. I, finalment, pot posar-se en contacte amb mi si només tens alguna pregunta ràpids. Així que vostè em pot trobar a Twitter aquí, meu lloc web, i només el meu correu electrònic. Així que espero, que era alguna cosa-- només un teaser curt del que R és realment capaç de fer. I és d'esperar, que acaba de fes un cop d'ull a aquests tres enllaços i veure el que pot fer més. I suposo que això és només sobre ell. Gràcies. [Aplaudiments]