>> [Música tocando]
DUSTIN Tran: Hi.
Dustin do meu nome.
Entón, eu vou estar presentando Análise de datos en R.
Só un pouco sobre min mesmo.
Eu son actualmente un estudante de posgrao en as Ciencias da Enxeñaría e aplicada.
Eu estudo un cruce de aprendizaxe de máquina e estatísticas
Análise de datos de modo en que R é realmente fundamental para o
Fago nunha base diaria.
>> E R é especialmente bo para a análise de datos
porque é moi bo para prototipado.
E, normalmente, cando está facendo algún tipo de análise de datos, unha morea de problemas
van cognitiva.
E así, só quere ter algúns realmente boa linguaxe que
é só bo para facer built-in funcións, en oposición
a ter que xestione as cousas de baixo nivel.
Entón, en principio, eu só vou para introducir o que é de R, por que
quere usalo, e a continuación, pasar por riba nalgún demo,
e só ir a partir de aí.
>> Entón, o que é de R?
R é só unha linguaxe desenvolvida para computación estatística
e visualización.
Entón, o que isto significa que é unha moi excelente lingua
para todo tipo de cousas que se encarga de incerteza ou visualización de datos.
Entón tes todo isto distribucións de probabilidade.
Non van ser built-in funcións.
Tamén terá excelente plotagem paquetes.
>> Python é outro competidor Idioma para datos.
E unha cousa que eu creo que R é moito mellor a é a vista.
Entón, o que vai ver na demo como ben é só unha linguaxe moi intuitiva
que simplemente funciona moi ben.
Tamén é libre e de código aberto, como é outra boa linguaxe, eu creo.
>> E aquí, unha morea de só palabras clave xogado en ti.
É dinámico, é dicir, se ten un tipo específico asignado a un obxecto
que el só vai mudalo on the fly.
É preguiceiro, por iso é intelixente sobre como o fai cálculos.
Funcional que significa que realmente pode funcionar baseado fóra de funcións tan anything--
calquera tipo de manipulación que é facendo, el estará baseado funcións.
>> Así, os operadores binarios, por exemplo, son funcións só inherentemente.
E todo o que vai facer é
será correr en si funcións.
E entón orientada a obxectos tamén.
>> Entón aquí está unha trama xkcd.
Non só porque eu sinto que Xkcd é fundamental para calquera tipo
de presentación, senón porque Eu sinto que iso realmente
martela o punto en que unha gran parte do momento en que está facendo algún tipo de datos
análise, o problema non está tanto o quão rápido el corre,
pero canto tempo vai levalo a programar a tarefa.
Entón, aquí é só analizar se estratexia a ou b é máis eficiente.
Este será algo que é
enfrontará moito con en tipo de linguaxes de baixo nivel
onde está lidando con fallos Lun, distribución de memoria, initializations,
mesmo facendo as funcións embutidas.
E este material está todo tratado moi, moi elegante en R.
>> Entón, só para martelar este punto, o maior pescozo
será cognitivo.
Así, a análise de datos é un problema moi difícil.
Se está facendo aprendizaxe de máquina ou se está
facendo só algún tipo de explotación de datos de base,
non quere ter para levar un documento
e despois compilar algo cada vez que
quero ver o que a columna parece, o que en particular entradas nunha matriz
parece.
Entón só quere ter algunha interface moi legal
pode realizar unha función simple que os índices para o que quere que
desexa e basta executa-lo de alí.
E precisa dominio linguaxes específicas para iso.
E R realmente vai axudar a definir o problema e resolver-lo deste xeito.
>> Entón aquí vai unha que mostra a programación enredo popularidade de R como foi aínda co tempo.
Entón, como podes ver, como 2013 ou polo que só explotado tremendamente.
E iso foi só por causa diso gran tendencia na industria de tecnoloxía
sobre big data.
Ademais, non só a tecnoloxía industria, pero realmente
calquera isso-- industria, porque moitas das industrias
son unha especie de fundamental para tratar de resolver estes problemas.
E, normalmente, pode que algún bo forma de medir estes problemas
ou incluso define-los ou resolvelos los usando datos.
Entón, eu creo que agora é o 11º R lingua máis popular en TIOBE
e foi crecente desde entón.
>> Entón, aquí está un pouco máis características de R. Ten
un enorme número de paquetes e por todas estas cousas distintas.
Entón, cando ten un determinado problema, a maioría
o tempo de R terá esa función para ti.
Entón, se quere construír algún tipo de máquina
algoritmo de aprendizaxe chamado Aleatoria Bosque ou Árbores de decisión,
ou mesmo tentando aproveitar a media de unha función ou algún deste material,
R vai ter iso.
>> E se fai se preocupa optimización, unha cousa que é común
é que despois que fixo prototipado algún tipo de linguaxe de alto nivel,
vai xogar este em-- Só vai porto que máis de
a algunha linguaxe de baixo nivel.
O que é bo sobre R é que unha vez que é prototipado feito isto, pode realizar C ++,
ou Fortran, ou calquera destes os de nivel máis baixo directamente na R.
Entón esta é unha realidade recurso interesante sobre R,
se realmente se preocupan o punto de optimización.
>> E iso tamén é moi bo para visualizacións na web.
Así D3.js, por exemplo, é Eu creo que un outro seminario
que presentamos hoxe.
E iso é realmente impresionante para facendo visualizacións interactivas.
E D3.js supón que teña algún tipo de datos a ser Plot
e R é unha boa forma de ser capaz de facer a análise dos datos antes de export-lo
sobre a D3.js ou mesmo só correr Ordes D3.js en si mesmo R,
así como todos estes outras bibliotecas ben.
>> Entón esa foi só a introdución de o que é R e por que pode usalo.
Polo tanto, esperamos que, eu teño Está convencido algo
sobre só tentando ver o que é.
Entón, eu estou indo a ir adiante e pasar por algúns fundamentos sobre os obxectos R
eo que realmente pode facer.
>> Entón, aquí é só un banda de comandos de matemáticas.
Entón diga you're-- quere construír mesmo idioma e só quere
para ter unha chea de ferramentas diferentes.
Calquera tipo de operación pensas que quero é practicamente estará en R.
>> Entón aquí é 2 máis 2.
Aquí é 2 veces pi.
R ten unha morea de constantes internas que vai empregar a miúdo como pi, e.
>> E entón, aquí está 7 máis runif, así runif de 1.
Esta é unha función que é xera un uniforme aleatoria de 0 a 1.
E despois hai a 3 ao poder do 4.
Hai raíces cadradas.
>> Hai rexistro.
Entón rexistro vai facer de base exponencial por si só.
E entón, se se especifica unha base, a continuación, pode facer o que quere de base.
E entón aquí están algúns outros comandos.
Entón tes 23 mod 2.
Entón tes o resto.
Entón tes científica notación se tamén
quero facer só máis e cousas máis complicadas.
>> Entón aquí está a asignación.
Entón atribucións típicas en R faise cunha frecha
por iso é menos que e, a continuación, o guión.
Entón aquí eu só estou atribuíndo 3 ao val variable.
>> E entón eu estou imprimindo val e entón ela mostra tres.
Por defecto en R intérprete, el imprimirá as cousas para ti
así que non ten que especificar imprimir un val calquera momento que quere imprimir algo.
Pode só facer val e logo vai facelo por vostede.
>> Ademais, pode utilizar tecnicamente iguais como un operador de asignación.
Hai pequenas sutilezas entre usar a frecha
operador e os iguais operador de atribucións.
Principalmente por convención, todo só vai usar o operador frecha.
>> E aquí, estou atribuíndo este notación oblicua chamada 1 colonos 6.
Isto xera un vector de 1 a 6.
E iso moi bo porque, logo acaba de asignar o vector para val
e que funciona por si só.
>> Entón, iso xa está a suceder a partir dun single-- un dato moi intuitiva
estrutura de só un par de algún tipo de tipo nun vector
e que pode recoller todos os valores escalares para ti.
Entón, despois de pasar de escalar, vostede ter obxectos R e este é un vector.
Un vector é calquera tipo de recollida do mesmo tipo.
Entón, aquí están unha morea de vectores.
>> Polo tanto, este é numérico.
Numérico é o camiño de R de dicir dobre.
E así, por defecto, calquera número será un dobre.
>> Entón se ten c de 1,1, 3, negativa de 5,7, o c é unha función.
Este encadea os tres números nun vector.
E iso vai ser-- entón se notar 3, por si só,
normalmente asumiría que iso é como un número enteiro,
senón porque todos os vectores son do mesmo tipo,
Este é un vector de dúos ou numérica neste caso.
>> rnorm é unha función que xera variables-- normal estándar
ou valores normal estándar.
E eu estou especificando dous deles.
Entón, eu estou facendo rnorm 2, atribuíndo iso a devs, e entón eu estou imprimindo devs.
Entón, eses son só dous valores normais aleatorios.
>> E entón se fai INTS se preocupa con números enteiros.
Polo tanto, esta é só sobre a memoria distribución e gardar o tamaño da memoria.
Entón tería que engadir seus números polo capital L.
>> En xeral, este é Notación historial de R
para algo chamado enteiro longo.
Así, a maior parte do tempo, vai estar lidando con dobres.
E se nunca será máis tarde en optimizar o seu código,
pode simplemente engadir estes L's despois ou durante o mesmo
se é como premonitório sobre o que vai facer estas variables.
>> Entón, aquí é un vector de caracteres.
Entón, de novo, eu estou concatenando tres cordas esta vez.
Teña en conta que cordas dobres e cordas simples son as mesmas en R.
Entón, eu teño Arthur e Marvin e así cando estou imprimilas los, todos eles
van amosar cordas dobres.
E se tamén quere incluír a secuencia de matrimonio ou solteiro
nos seus personaxes, entón podes ou cambiar as súas cordas.
>> Entón Marvin ao segundo elemento, este é
vai show-- vostede só ten cordas dobres
e, a continuación, unha única secuencia de xeito que este é alterna.
Se non, se quere usar un dobre operador de cadea nun cordón dobre
cando está declarando-o, a continuación, non necesitará empregar o operador de escape.
Entón fai a dobre cadea barra invertida.
>> E, finalmente, nós tamén ter vectores lóxicos.
Entón logical-- tan certo e FALSE, e son
será todas as letras maiúsculas.
E entón, unha vez máis, eu estou concatenando Los e, a continuación, atribuíndolles a bools.
Entón bools mostrará vostede TRUE, FALSE e TRUE.
>> Entón aquí está a indexación vectorized.
Así, en principio, eu estou tomando un function--
iso chámase sequence-- secuencia de 2 a 12.
E eu estou tendo unha secuencia por 2.
Por iso, vai facer 2, 4, 6, 8, 10 e 12.
E entón, eu son a indexación para obter o terceiro elemento.
>> Entón, unha cousa a ter presente é de que R índices a partir do 1.
Entón vals 3 dará ti o terceiro elemento.
Este é tipo de diferente doutros linguas en que comeza de cero.
Así, en C ou C ++, por exemplo, está indo para obter o cuarto elemento.
>> E aquí está vals 3-5.
Entón, unha cousa que é moi legal é que
pode xerar variables temporais dentro e despois é só usalos en tempo real.
Entón aquí está 3-5.
Entón, eu estou xerando un vector 3, 4, e 5 e logo
Estou indexación para obter o terceiro, cuarto e quinto elementos.
>> Entón, do mesmo xeito, pode Resumo Este só facer
calquera tipo de un vector que lle dá a indexación.
Entón aquí está vals e despois o primeiro, terceiro e sexto elementos.
E entón, se quere para facer un complemento,
entón só facer o menos despois e que vai
dar-lle todo o que non é o primeiro, terceiro, sexto ou elemento.
Polo tanto, este será de 4, 8 e 10.
>> E se queres comezar aínda máis avanzado,
pode concatenar vectores booleanas.
Polo tanto, este índice está indo darlle este vector booleano de lonxitude 6.
Entón rep CERTO comas 3.
Isto repetir CERTOS tres veces.
Entón, iso vai darlle unha vector TRUE, TRUE, TRUE.
>> rep FALSE 4-- iso vai darlle un vector de FALSE, FALSE, FALSE, FALSE.
E, a continuación, c vai concatenar estes dous Booleans xuntos.
Entón, está indo para obter tres Trues e, a continuación, catro FALSEs.
>> De xeito que cando vals índice, es indo para obter a verdade, verdade, TRUE.
Entón, iso vai dicir que si, Quero eses tres elementos.
E entón FALSE, FALSE, FALSE, FALSE vai
dicir non, eu non quero que eses elementos por iso non vai devolve-los.
>> E eu creo que non hai, en realidade, un erro de dixitación aquí porque este está dicindo repeat CERTO 3
e repetir FALSE 4, e tecnicamente, vostede só ten seis elementos para repetir FALSE,
debe ser repeat FALSE 3.
Creo que R tamén é intelixente dabondo, tales que, se se especifica só 4 aquí, entón
non vai mesmo erro fóra.
Vai só darlle ese valor.
Entón, vai simplemente ignorar esta cuarta FALSE.
>> Entón aquí está a asignación vectorized.
Entón set.seed-- iso só define o semente para números pseudoaleatorios.
Entón, eu estou definindo a semente 42, o que significa que se eu xerar
tres aleatoria normal valores e, a continuación, se
executar set.seed no seu propio país ordenador usando o mesmo valor 42,
logo, tamén terá a mesmos tres normais aleatorias.
>> Entón, iso é moi bo para a reproducibilidade.
Normalmente, cando está facendo algunha tipo de análise científica,
desexa definir a semente.
Desta forma, outros científicos pode só reproducir exactamente o mesmo código que ten
feito porque terán a exacta mesmas variables aleatorias isso-- ou chou
valores que sacou fóra tamén.
>> E así a asignación vectorized aquí está amosando os vals 1-2.
Por iso, leva os dous primeiros elementos de vals e atribúe a eles a 0.
E entón, tamén se pode simplemente facer o cousa semellante cos Booleans.
>> Entón vals non é igual a 0-- esta vontade darlle unha falsa vector, FALSE, TRUE
neste caso.
E, a continuación, que vai dicir calquera destes índices iso fose verdade,
logo vai asignar esa a 5.
Por iso, leva o terceiro elemento aquí e, a continuación, atribúe a el a 5.
>> E iso é moi bo en comparación con linguaxes de baixo nivel
onde ten que usar para loops para facer todas estas cousas vectorized
porque é só moi intuitiva e é unha única one-liner.
E o que é grande sobre notación vectorized
é que no R, estes son unha especie de built-in de xeito que xa son case tan rápido
como facer nunha linguaxe de baixo nivel como oposición a facer un loop en R
e despois ter que facer o propio indexación dinámica.
E iso vai ser máis lento que facer este tipo de cousas vectorized
onde pode facelo en paralelo, onde é facelo en enfiar basicamente.
>> Entón, aquí está vetorizado operacións.
Entón, eu estou xerando un valor de 1 a 3, atribuíndo que a vec1, 3 a 5, vec2,
engadindo-os xuntos.
Engade-los compoñentes tan sabio é 1 + 3, 2 + 4, e así por diante.
>> vec1 veces vec2.
Este multiplica os dous valora a compoñente sabio.
Polo tanto, é un veces 3, 2 veces 4, e logo 3 veces 5.
>> E, a continuación, do mesmo xeito que pode tamén facer comparisons-- comparacións lóxicas.
Entón é FALSE FALSE verdade neste caso porque 1 non é maior que 3,
2 non é superior a 4.
Isto é, creo, outro erro de dixitación, 3 en definitiva non é superior a 5.
Si.
E así pode simplemente facer todo estas operacións simples
porque a súa herdado a partir das propias clases.
>> Entón, iso foi só o vector.
E iso é unha especie de máis fundamental R obxecto porque xa un vector,
pode construír obxectos máis avanzados.
>> Entón aquí está unha matriz.
Esta é esencialmente a abstracción de que é unha matriz en si.
Polo tanto, neste caso, é de tres diferentes vectores, onde cada un é unha columna,
ou pode considera-lo como cada un é unha liña.
>> Entón, eu estou almacenando unha matriz de 1 a 9 e logo, estou especificando tres liñas.
Entón 1-9 lle dará un vector 1, 2, 3, 4, 5, 6, e todo o camiño ata 9.
>> Un aspecto a ter tamén en conta é que R almacena valores en formato de columna-major.
Polo tanto, noutras palabras, cando ve un a 9, que vai almacenar eles--
que será 1, 2, 3, na primeira columna,
e, a continuación, que vai facer 4, 5, 6 na segunda columna,
e, a continuación, 7, 8, 9, na terceira columna.
>> E aquí están algunhas outras funcións comúns que pode usar.
Entón din calquera dúbida, iso lle vai dar as dimensións da matriz.
Vai facelo regresar un vector de dimensión.
Polo tanto, neste caso, porque nosa matriz é de 3 por 3,
vai darlle unha vector numérico que é 3 3.
>> E aquí é só amosar multiplicación de matrices.
Por iso, normalmente, se acaba de facer asterisk-- tan mat asterisco mat--
este será operación-compoñente sabio
ou o que se chama o produto Hadamard.
Por iso, vai facer cada elemento compoñente-wise.
Con todo, se quere multiplication-- matriz
así multiplicando os primeiros tempos de liña primeira columna da segunda matriz
e así on-- usaría esta operación por cento.
>> E t de fita é só un operación para a transposición.
Entón, eu estou dicindo que tomar a trasposta en a matriz, multiplicala lo pola matriz
si.
E entón el vai voltar a vostede máis 3
por 3 matriz de visualización o produto que desexa.
>> E así que foi matriz.
Aquí está o que se chama un cadro de datos.
A estrutura de datos que pode pensar como unha matriz, pero cada propia columna
será dun tipo diferente.
>> Entón, o que é realmente legal sobre datos cadros é que, en si, a análise dos datos,
vai ter todo isto datos heteroxéneos e todo iso realmente
desarrumado cousas onde cada unha das columnas eles mesmos poden ser de diferentes tipos.
Entón aquí estou dicindo crear un cadro de datos, facer ints 1-3,
e, a continuación, tamén teñen un vector personaxe.
Entón podo índice través Cada unha destas columnas
e entón eu vou comezar os propios valores.
E tamén pode facer algún tipo de operacións en cadros de datos.
E a maioría das veces cando está facendo análise de datos ou algún tipo
de pre-procesamento, pode traballar con estas estruturas de datos
onde cada columna vai ser de outro tipo.
>> Finalmente, así que estas son esencialmente só os catro obxectos esenciais na Lista R.
só vai recoller todas as outros obxectos que quere.
Por iso, este pode almacenar nunha variable que pode acceder facilmente.
>> Entón, aquí, eu estou tendo unha lista.
Eu digo cousas é igual a 3.
Entón, eu vou ter un elemento no da lista, e iso é chamado de material,
e que vai ter o valor 3.
>> Eu tamén pode crear unha matriz.
Polo tanto, este é de 1 a 4 e liña final é igual a 2, de xeito que unha matriz de 2 por 2.
Tamén na lista e chámase mat.
moreStuff, unha cadea de caracteres, e mesmo outra lista en si mesmo.
>> Polo tanto, esta é unha lista que é 5 e oso.
Por iso, ten o valor de 5 e ten o oso cadea de caracteres
e é unha lista dentro dunha lista.
Así, pode que estes cousas recursiva onde
ten un another-- escriba dentro do modelo.
Entón, do mesmo xeito, pode ter unha matriz dentro doutra matriz e así por diante.
E a lista é só unha boa forma de recoller e agregar
todos estes diferentes obxectos.
>> E, finalmente, aquí é só axudar no caso Este foi só ir máis rápido.
Entón, cando está confuso sobre algún tipo de función,
pode facer axuda desa función.
Así que pode facer axuda matriz ou unha matriz de punto de interrogación.
E a axuda eo signo de interrogación son só unha abreviación para o mesmo
polo que son alias.
>> lm é unha función que só fai un modelo lineal.
Pero se simplemente non ten idea de como iso obras, pode só facer axuda lm
e que imos darlle algunhas tipo de documentación que
mira como unha especie de páxina home en Unix, onde
ten unha breve descrición do que que fai, tamén o que os seus argumentos son,
o que retorna, e só consellos sobre como para usalo, e algúns exemplos ben.
>> Entón deixe-me ir adiante e amosar algúns de demostración do uso de R. Aceptar.
Entón eu fun moi rapidamente só os datos
estruturas e algún tipo de op-- algunhas das operacións.
Velaí algunhas funcións.
>> Entón aquí eu só vou para definir unha función.
Entón, eu tamén estou usando operador de asignación aquí,
e entón eu digo declaralo como unha función.
E leva o valor de x.
Polo tanto, este é calquera valor que quere e eu estou indo a voltar x si.
Polo tanto, esta é a función identidade.
>> E o que é legal sobre iso en comparación con outros idiomas
e outra de baixo nivel linguas é que x
pode ser de calquera tipo en si e el vai volver deste tipo.
Así, pode imagine-- entón imos me basta con executar este axiña.
Sentímolo.
>> Entón, unha cousa que eu tamén debería mencionar é que este editor que está a usar
chámase rstudio.
Isto é o que se chama IDE.
E unha cousa que é realmente agradable sobre este
é que incorpora unha gran parte do as cousas que quere facer en R por si só
só moi intuitiva.
>> Entón aquí está unha consola intérprete.
Entón, do mesmo xeito, tamén se pode obter este consola prima só facendo unha R. capitais
E este é o mesmo que a consola.
Entón eu só podo facer a función id x, x, x.
E entăo-- e, a continuación, que vai estar ben en si.
>> Entón rstudio é grande porque ten a consola.
Ela tamén ten os documentos desexa executar.
E entón el ten algunhas variables que se pode ver en ambientes.
E entón, se ten facer parcelas, entón
pode só velo aquí, a diferenza de xestionar todos estes diferentes fiestras
por si.
>> En realidade, eu persoalmente uso Vin, pero eu sentir como rstudio é excelente só
para obter unha boa idea de como usar R. Normalmente,
cando estás aprender algunha nova tarefa,
non quere tratar con moitas cousas á vez.
Entón R é só un rstudio very-- é unha boa forma de aprender R
sen ter que tratar con todas esas outras cousas.
>> Entón, aquí estou id correndo Ola.
Isto volve Ola.
ID 123.
Aquí é un vector de números enteiros.
Entón, do mesmo xeito, porque pode tomar calquera algún tipo de valor,
pode facer volver id x para que volte 1234 e 5.
>> E deixe-me amosar-lle que este é realmente un número enteiro.
E do mesmo xeito, se fai clase id x, que será enteiro.
E entón, tamén se pode comparar os dous e que é certo.
Entón, eu estou comprobando se id x é igual a igual ax e aviso
que lle dá dúas trues.
Polo tanto, este non está dicindo son os dous obxectos idénticos,
pero son cada unha das entradas dentro dos vectores idénticos.
>> Aquí está bounded.compare.
Polo tanto, este é un pouco máis complicado na medida en que se ten unha condición e outra
e logo, hai que dous argumentos de cada vez.
Así, x é de calquera tipo.
E eu digo isto O segundo argumento é a.
Isto pode ser calquera cousa como ben.
Pero por defecto, que vai levar 5, se non especificar nada.
>> Entón aquí eu vou dicir Se x é maior que un.
Entón, se eu non especificar un, el di que se x é maior que 5,
entón eu estou indo para voltar TRUE.
outra cousa, eu estou indo a voltar FALSE.
Entón deixe-me ir adiante e establecer iso.
>> E agora eu vou executar bounded.compare 3.
Entón, el di que é menos 3 than-- 3 é maior que 5.
Non, non é tan falso.
>> E bounded.compare 3 e vou para comparalos-lo usando un é igual a 2.
Entón agora eu digo si, agora eu quero un para ser outra cousa.
Entón, eu vou dicir unha, ten que ser 2.
>> I pode facer este tipo de notación ou digo un é igual a dous.
Esta é unha forma máis lexible en que cando está
mirando para estes realmente funcións complicadas que
tomar arguments-- múltiple e este pode haber decenas oftentimes-- só dicindo
un é igual a 2 é máis lexible para ti, para que, máis tarde, no futuro
vai saber o que está facendo.
>> Polo tanto, neste caso, eu son proverbio é 3 superior a 2.
Si, é.
E do mesmo xeito, podo simplemente eliminar iso e dicir, é de 3 superior a 2
onde a é igual a 2.
E iso tamén é certo.
Si?
>> Audiencia: É vostede executar liña por liña?
>> DUSTIN Tran: Si, eu son.
Entón o que eu estou facendo aquí é tomar este texto document--
e que é grande sobre rstudio é que Só podo executar un short-- unha tecla de acceso.
Entón, eu estou facendo Control-Intro.
>> E entón, eu estou tomando o liña no documento de texto
e, a continuación, colocar na consola.
Entón aquí estou dicindo, bounded.compare e eu estou facendo Control-X.
Entón, podo simplemente non funciona aquí tamén.
E, entón, que vou pegar o liña e, a continuación, colocar-lo aquí.
E, a continuación, do mesmo xeito, podo facer correr aquí.
E entón el vai só manter a definición as liñas para a consola así.
>> E se tamén en conta a caché claves están aí só como na sintaxe C.
x-- o se a condición é tamén usará parénteses e despois
pode usar outra cousa.
Outra é else if.
Polo tanto, esta será x é igual é igual a un, por exemplo.
E entón eu vou volver algo aquí.
>> Teña en conta que existen dous diferentes cousas aquí que está a suceder.
Unha delas é que aquí estou especificando devolver o valor TRUE.
Aquí eu só digo x.
Entón R normalmente por defecto tomar o último arguments--
ou tomar a última liña do código, e que será o que é de retorno.
Entón aquí é o mesmo cousa como facendo retorno x.
>> E só para mostrar a vostede.
E, a continuación, que vai traballar só como aquel.
Entón déixeme continuar con iso.
>> Entón else if.
E realmente, podo volver calquera cousa que me gustaría.
Entón eu non ten sequera a retorno Booleans o tempo,
Só podo volver outra cousa.
Entón eu podo facer oso retorno.
>> Polo tanto, se x é igual é igual a un, vai volver oso.
Se non, vai voltar TRUE.
Eu tamén podo facer un vector ou realmente calquera cousa.
>> E normalmente en estaticamente linguas ingresaran,
que tería que especificar un tipo aquí.
E teña en conta que pode ser calquera cousa.
E R é intelixente dabondo para que el só vai facer, e que vai funcionar ben.
>> Entón déixeme definir iso.
Unexpected-- oh Sentímolo.
Debe ser unha chaveta aquí.
Aceptar.
Con estilo.
Todo certo.
Entón agora imos comparar 3 e un é igual a 3.
Por iso, debe return-- yeah-- o valor oso.
>> Entón, agora unha cousa máis xeral é como o que pasa con outras estruturas de datos.
Entón tes esta función.
Iso vai funcionar en calquera tipo de valor como 3 ou calquera numérico,
noutras palabras, dúas veces.
>> Pero o que dicir algo así como un vector.
Entón, o que pasa se fazer-- polo que estou vai asignar val para, digamos, 4 a 6.
Entón, se eu volver iso, este é un vector a partir do 4, 5, 6.
>> Agora imos ver que pasa se eu fai bounded.compare val.
Entón, iso lle vai dar 15 1251.
Polo tanto, noutras palabras, está dicindo se ollar para esta condición
por iso di x é menor que un ou algo así.
Polo tanto, este é lixeiramente confusa porque agora
simplemente non sabe o que está a suceder.
Entón eu creo que unha cousa que é realmente bo sobre só tentando depurar
é que pode só facer val é maior que un e ver que pasa alí.
>> Entón val-- un é, por defecto, 5 de xeito Imos facer Val superior a 5.
Polo tanto, este é un vector FALSE FALSE TRUE.
Agora, cando está olhando iso, que vai dicir se,
e, a continuación, que vai dar-lle este é un vector de FALSE FALSE TRUE.
>> Entón, cando pasar iso en R, R non ten idea do que está a facer.
Porque espera que un único valor, o que é un valor booleano, e agora
está dándolle un vector de booleanos.
Entón, por defecto, R é só vai dicir que o diaño,
Eu vou asumir que é vai levar o primeiro elemento aquí.
Entón, eu estou indo a dizer-- vou asumir que iso é falso.
Por iso, vai dicir Non, iso non é certo.
>> Do mesmo xeito, vai val ser igual é igual a un.
Non, desculpe 5.
E tamén vai ser falso tamén.
Entón, que vai dicir que non, Non é certo, ben polo que é
volverá este último.
>> Polo tanto, este é tanto unha cousa boa ou mala cousa, dependendo de como velo.
Porque cando está crear estas funcións,
realmente non sabe o que está a suceder.
Entón, ás veces ía querer un erro, ou que quere só unha advertencia.
Neste caso, R non fai iso.
Entón, é realmente ata vostede baseado fóra do que
Pensas que a lingua debe facer neste caso
se pasar nun vector de booleanos cando está facendo un se condición.
>> Entón, imos dicir que tiña o orixinal un cos outros, se volver TRUE e está
vai voltar FALSE.
Polo tanto, unha forma de abstraerse isto é para dicir que eu
Non precisa aínda esa cousa condicional.
Outra cousa que podo facer é só retornando os propios valores.
Entón, se observar, se Do Val é maior que 5,
iso vai volver vector FALSE FALSE TRUE.
>> Quizais iso é o que quere para bounded.compare.
Quere voltar un vector de booleanos en que compara cada un dos valores
para si mesmos.
Así, pode simplemente non bounded.compare función de x, un é igual a 5.
E entón, en vez de fazê- esta outra condición se,
Eu só vou volver x é maior que 5.
Entón, se é verdade, entón vai voltar TRUE.
E entón, se non é, é vai voltar FALSE.
>> E iso vai funcionar para calquera destas estruturas.
Entón podo bounded.compare c 1 6 ou 9 e entón eu vou dicir un é igual a 6,
por exemplo.
E entón el vai darlle o dereito booleana
vector que está designado.
>> Entón, eses son só funcións e, agora, déixeme só
amosar-lle algúns recursos visuais interactivos.
Eu non creo que eu realmente teño WiFi aquí, entón deixe-me ir adiante
e ignorar esta creo.
>> Pero unha cousa que é legal con todo, é que se só
quere probar unha morea de diferentes comandos, datos
hai unha morea de diferentes conxuntos de datos que xa están precargados no R.
Entón, un deles é chamado o conxunto de datos do iris.
Este é un dos máis coñecidos os de aprendizaxe de máquina.
Normalmente só facer algún tipo de casos de proba para ver se o código execútase.
Entón imos comprobar o que é iris.
>> Entón, esa cousa está pasando para ser un cadro de datos.
E é unha especie de tempo porque Eu só impreso vella.
Está imprimindo a cousa toda.
Por iso, ten todas estas diferentes nomes.
Así vella é unha colección de flores diferentes.
Neste caso, está dicindo -lle as especies do mesmo,
todos estes diferentes anchos e a lonxitudes de sépalas e a pétalos.
>> E así, normalmente, se quere imprimir vella,
por exemplo, non quere telo facer todo isto, porque iso pode levar máis
todo o seu consola.
Entón, unha cousa que é realmente interesante é a función de cabeza.
Entón, se acaba de facer a cabeza iris, que lle vai dar
os primeiros cinco liñas ou seis anos, eu creo.
E, a continuación ben de ti, pode só especificar aquí.
Entón 20-- iso vai dar -lle as primeiras 20 liñas.
E eu, en realidade, era unha especie sorprende que este
deume seis entón deixe-me ir adiante e comprobar iris-- ou na cabeza, me desculpe.
E aquí vai dar a documentación
do que a cabeza de valor fai.
Entón, ela retorna a primeira ou a última dun obxecto.
E entón eu vou ollar os patróns.
E, a continuación, el di que o default método de cabeza xe n é igual a 6L.
Polo tanto, este devolve os primeiros seis elementos.
E do mesmo xeito, se observar aquí, eu Non ten que especificar n é igual a 6.
Por defecto, usa seis, eu creo.
E entón, se eu queira especificar un determinado valor, entón eu podo ver iso tamén.
>> Entón ese é algúns comandos simples e aquí está outro que é apenas-- ben,
I can-- esta é realmente un pouco máis complexa,
pero iso só vai levar a clase de cada columna do conxunto de datos da vella.
Entón, iso vai amosar o que cada un deles columnas son en termos dos seus tipos.
Entón lonxitude sepal é numérico, width sepal é numérico.
Todos estes valores son só numérico porque pode dicir a partir destes datos
estruturar estes son todo vai numérico.
>> E a columna Especies vai ser un factor.
Entón, normalmente, podería pensar que isto é como unha cadea de caracteres.
Pero, se acaba de facer irisSpecies, e entón eu vou facer de cabeza 5,
e iso vai imprimir os primeiros cinco valores.
>> E logo, teña en conta esta niveis.
Polo tanto, este é dizendo-- esta é a forma do R de ter variables categóricas.
Entón, en vez de só Tendo en cadeas de caracteres,
el ten niveis especificando que estas cousas son.
>> Entón, digamos que irisSpecies 1.
Entón, o que quere facer aquí é que eu son subsetting a esta columna Especies.
Entón, iso leva a Especies columna e, a continuación,
el indexa para obter o primeiro elemento.
Polo tanto, este debe darlle setosa.
E dálle tamén os niveis aquí.
>> Entón, tamén se pode comparar isto para o personaxe setosa
e iso non vai a ser verdade, porque unha
é dun tipo diferente do que o outro.
Ou eu creo que iso é verdade, porque R é máis intelixente do que iso.
E mira para iso e, a continuación, di, quizais este sexa o que quere.
Entón, que vai dicir que o personaxe cadea setosa é o mesmo como esta.
E, a continuación, do mesmo xeito, pode tamén pode incorporarse estes como así por diante.
>> Entón, iso é só unha especie de comandos rápidos do conxunto de datos.
Entón aquí vai unha explotación de datos.
Polo tanto, este é un pouco máis implicadas coa análise de datos.
E este é eliminado dalgúns Bootcamp en R para Berkeley.
>> Así biblioteca externa.
Entón, eu estou indo a cargar nun biblioteca que se chama estranxeira.
Entón, iso me vai dar read.dta así supoñer que eu teño ese conxunto de datos.
Este é almacenado na actual directorio do meu consola funcionando.
Entón imos ver o que o directorio de traballo é.
>> Entón, aquí está o meu directorio de traballo.
E a lectura de datos de puntos, esta cousa, está dicindo este ficheiro
está situado no cartafol de datos de este directorio de traballo actual.
E este non é read.dta un comando estándar.
Eu creo que eu cargala no xa.
IEI asumido eu cargueime iso no xa.
>> Pero ata read.dta non vai para ser un comando estándar.
E é por iso que vai ter para cargar nesta biblioteca package--
este paquete chamado estranxeira.
E se non ten o paquete, eu creo
estranxeira é un dos máis integrados.
Se non, tamén se pode facer install.packages
e iso vai instalar o paquete.
E iso lle vai dar R. Uh, non.
E entón eu só vou deixar iso porque eu xa teño.
>> Pero o que é realmente agradable sobre R é que a xestión de paquetes
sistema é moi elegante.
Porque vai almacenar todo realmente moi ben para ti.
Polo tanto, neste caso, está indo para almacenar Lo, creo eu, esta biblioteca aquí.
>> Entón, cando quere instalar novos paquetes,
é tan sinxelo como facendo install.packages
e R gerenciará todos os paquetes para ti.
Entón non ten que facer algo en Python, onde ten paquete externo
xestores como papel Anaconda onde está
doing-- de instalar paquetes fóra do Python
e logo intentar executa-los ti mesmo.
Polo tanto, esta é realmente bo xeito.
>> E install.packages require internet.
Lévao a partir dun servidor e do repositorio que
recolle todo o paquetes chámase CRAN.
E pode especificar que tipo de espello quere facer a descarga dos paquetes.
>> Entón aquí estou tendo este conxunto de datos.
Estou lendo o en utilizar esta función.
Entón deixe-me ir adiante e facelo.
>> Entón imos supor que ten ese conxunto de datos
e non ten absolutamente ningunha idea o que é.
E iso, en realidade, trata-se con bastante frecuencia na industria
onde só ten eses toneladas e toneladas de cousas sucias
e son incriblemente non marcado.
Entón aquí eu teño esa dataset e eu non sei
o que é así que eu son só mostrando para comprobar-la.
>> Entón, eu vou facer de cabeza.
Entón eu comprobar os seis primeiros columnas de que ese conxunto de datos é.
Polo tanto, este é o estado, pres04, e logo todos estes diferentes tipo de columnas.
E o que é interesante aquí, eu creo, é que
diría que iso parece como unha especie de elección.
E eu creo que só a partir de ollando para o ficheiro
Nome Este é algún tipo de colección de datos sobre candidatos ou electores
que votaron en presidentes específicas ou candidatos presidente
para a elección de 2004.
>> Entón aquí está valores 1, 2 Polo tanto, unha forma de almacenar
os candidatos presidente son os seus nomes.
Neste caso, parece que son só valores enteiros.
Entón, 2004, era de Bush contra Kerry eu creo.
E agora, imos dicir que só non sei se 1 corresponde ao Bush ou 2
corresponde a Kerry ou e así por diante e así por diante, non?
>> E esta é, só para min, un problema moi común.
Entón, o que pode facer neste caso?
Entón, imos comprobar todas esas outras cousas.
>> estado, estou asumindo este vén de diferentes estados.
partyid, renda.
Vexamos partyid.
Entón, talvez unha cousa que podes facer é mirar para cada unha das observacións
que teñen un partyid do republicano ou demócrata ou algo así.
Entón imos só ollar para o que é partyid.
>> Entón, eu vou tomar dat e entón eu vou
para facelo cifrão operador que fixen anteriormente
e iso vai subconxunto para esa columna.
E entón eu estou indo a cabeza esta en 20, só para ver o que isto parece.
>> Polo tanto, este é só unha morea de axencias nacionais.
Polo tanto, noutras palabras, ten falta de datos sobre estes faces.
Pero tamén entender iso dat partyid é un factor
de xeito que este dálle distintas categorías.
Así, noutras palabras, pode tomar partyid Demócrata, republicano, independente,
ou calquera outra cousa.
>> Entón, imos adiante e imos ver cal delas é-- oh, OK.
Entón, eu estou indo ao subconxunto para partyid e despois
vexa cales son Demócrata, por exemplo.
Isto vai darlle un valor booleano, unha enorme booleano de trues e FALSEs.
>> E agora, imos dicir que quero ao subconxunto para estes faces.
Entón, iso vai levar a miña dat e a calquera subconxunto observacións
teñen iguais partyid iguala demócrata.
E iso é moi longo, porque hai tantos deles.
Entón, agora, eu estou indo a cabeza esta en 20.
>> E, como observou, é igual a equals é interesante na medida en que está
já-- tamén está incluíndo as axencias nacionais.
Polo tanto, neste caso, aínda pode non chegar calquera información, porque agora ten AN
e só quere ver cal dos observación corresponden ao Demócrata
e non estes valores en falta si.
Entón, como se librar deses NAS?
>> Entón, aquí estou só usar o no meu cursor e logo, dicindo moverse.
E entón aquí eu só vou dicir is.na datpartyid.
Polo tanto, este e e tomará dous vectores diferentes booleanas
e dicir que vai ser TRUE e FALSE por exemplo.
Por iso, vai facer este compoñente-wise.
Entón aquí estou dicindo take o cadro de datos, subconxunto
para aqueles que corresponden a demócrata, e eliminar calquera deles que non son NA.
>> Polo tanto, este debe will-- darlle algo.
Veremos is.na.
Imos tentar datpartyid is.na.
E iso debe dar você-- sorry-- só un vector booleano.
E entón, por que é moi longo, Estou indo ao subconxunto a 20.
Aceptar.
Polo tanto, debería funcionar.
>> E este tamén será trues.
Ah, o meu erro aquí é que I'm-- I usar C ++ e R alternativamente así que fago
este erro o tempo.
O operador e é en realidade, o que quere.
Non quere usar dous ampersands, só un único.
Aceptar.
>> Entón imos ver.
Entón, nós subsetted ao partyid onde están Demócrata
e eles non están falta valores.
E agora imos ollar para cales os que votaron a favor.
Así, parece que a maioría deles votou 1.
Entón, eu estou indo para adiante e dicir que é Kerry.
>> E do mesmo xeito, pode tamén van para Republicano
e, esperamos, iso debe darlle 2.
É só unha morea de columnas diferentes.
E, de feito, é 2.
Entón partyid todo republicanos, a maioría deles está votando para 2.
>> Así, parece que, só mirando para iso,
Republicano será un very-- ou o partyid
vai ser moi gran factor na determinación
cal candidato son vai votar.
E iso é obviamente certo en xeral.
E este corresponde ao seu intuición, por suposto.
Entón, parece que eu son correndo contra o tempo para que
déixeme só debe ir adiante e mostrar algunhas imaxes rápidas.
Entón aquí está algo que é lixeiramente máis complicada coa visualización.
Polo tanto, neste caso, este é un moi simple análise de só comprobar o que
o presidente da '04 é.
>> Polo tanto, neste caso, digamos que quería responder a esta pregunta.
Entón imos supor que quería saber a votación comportamento na elección presidente 2004
e como iso varía segundo a raza.
Así, non só que quere ver o comportamento de voto,
pero quere subconxunto de cada raza e tipo de resumir iso.
E só se pode dizer- por este complexo notación
que esta é unha especie de obter nebuloso.
>> Entón, un dos máis avanzados R paquetes que é tamén unha especie de recente
chámase dplyr.
Por iso, é este aquí.
E ggplot2 ggg-- é só un bo forma de facer as mellores visualizacións
do que a un embutido.
>> Entón, eu estou indo a cargar estas dúas bibliotecas.
E entón, eu estou indo a ir adiante e executar este comando.
Pode só tratar isto como unha caixa negra.
>> O que está pasando é que esta tubo operador está pasando neste argumento
en aquí.
Entón, eu estou dicindo por grupo dat raza e entón presidente 04.
E entón, todos estes outros comandos está filtrando e, a continuación, resumindo
onde eu estou facendo conta e entón eu estou trazando-lo aquí.
Aceptar legal.
Entón, imos adiante e ver o que isto parece.
>> Entón, o que está a suceder aquí é que eu só Plot cada unha das razas e, a continuación,
cales os que votaron a favor.
E estes dous diferentes Os valores corresponden a 2 e 1.
Se quere ser máis elegante, tamén se pode
só especificar que 2 é Kerry-- ou 2 é de Bush, e, a continuación, un é Kerry.
E tamén pode ter que na súa lenda.
>> E tamén pode dividir estes gráficos de barras.
Porque unha cousa é que, se observar,
este non é moi fácil de identificar cal destes dous valores son maiores.
Entón, unha cousa que quere facer é aproveitar esta zona azul
e só move-o aquí para que pode comparar os dous lado a lado.
E eu creo que é algo que eu Non ten tempo para facer agora,
pero iso tamén é moi fácil de facer.
Pode só ollar para as páxinas do manual de ggplot.
Así, pode simplemente non ggplot como que e ler nesta páxina home.
>> Entón déixenme só rapidamente amosar-lle algunhas cousas legais.
Imos adiante e ir a-- só unha aplicación de aprendizaxe de máquina.
Entón, digamos que temos estes tres paquetes así que eu estou indo a cargalos.
Entón, iso só imprime algúns información cando carguei na cousa.
Entón, eu estou dicindo isto read.csv, este conxunto de datos, e agora
Eu estou indo a ir adiante e ollar e ver o que ten dentro deste conxunto de datos.
>> Así, as primeiras 20 observacións.
Entón, eu só teño X1, X2, e Y. Por iso, Parece que unha morea deses valores
están varios de quizais 20 a 80 ou máis.
E, a continuación, do mesmo xeito para X2 e despois Y esta parece ser etiquetas de 0 e 1.
>> Para comprobalo, podo só facer X1 datos de resumo.
E, a continuación, do mesmo xeito para todas estas outras columnas.
Entón resumo é unha forma rápida de só amosando valores rápidos.
Oh, desculpe.
Este debe ser Y.
>> Polo tanto, neste caso, dá a quantiles, medianas, maxes tamén.
Neste caso, dataY, verás que só vai ser 0 e 1.
Ademais, a media está dicindo 0,6, só significa que
Parece que eu teño máis que 1s 0s.
>> Entón deixe-me ir adiante e amosar o que iso parece.
Entón, eu estou indo só para trazar este.
Imos ver como limpar iso.
Oh Aceptar.
Aceptar.
>> Polo tanto, este é o que parece.
Así, parece que os amarelos I especificados como 0, e despois vermello I especificar como 1s.
Entón, aquí parece que puntos de etiqueta e que
Parece que só quería un pouco tipo de agrupación sobre este asunto.
>> E deixe-me ir adiante e amosar vostede algunhas destas funcións embutidas.
Entón aquí é lm.
Polo tanto, esta é só a tentar para axustar unha liña a esta.
Entón, cal é a mellor maneira que eu poida axustar unha liña tal
que será mellor separar este tipo de clustering.
E preferentemente, pode só ver que eu simplemente executar todos estes comandos
e logo, eu vou adiante e engadir a liña.
>> Polo tanto, este parece ser o mellor palpite.
É tomar o mellor que minimiza o erro no intento de encaixar esta liña.
Obviamente, isto parece medio bo, pero non é o mellor.
E os modelos lineais, en xeral, van ser
realmente grande para a teoría e só unha especie dos fundamentos de construción da máquina
aprendendo.
Pero, na práctica, vai quero facer algo máis xeral.
>> Así, pode só tentar executar algo chamado unha rede neuronal.
Esas cousas son cada vez máis común.
E eles simplemente traballar fantástica para grandes conxuntos de datos.
Polo tanto, neste caso, só have-- imos see-- temos nrow.
Entón nrow está só dicindo número de liñas.
Polo tanto, neste caso, eu Ten 100 observacións.
>> Entón deixe-me ir adiante e facer unha rede neuronal.
Entón, iso é moi bo porque podo só dicir nnet
e entón eu estou regredindo Y. Entón o Y é aquela columna.
E entón que a regresión no as outras dúas variables.
Polo tanto, este é máis curto notación para X1 e X2.
>> Entón, imos adiante e executar este.
Oh, desculpe.
Necesito realizar esa cousa toda.
E esta é só a impresión de notación para a rapidez ou non rapidamente el
converxer.
Polo tanto, parece que fixo converxer.
Entón deixe-me ir adiante e de impresión o que iso parece.
>> Vexa aquí a foto e aquí é un contorno amosando o quão ben el encaixa.
E este é apenas-- verás este que isto é moi, moi bo.
Pode ata ser overfitting, pero pode tamén
son responsables de que con outro técnicas como a validación cruzada.
E estes tamén son construídas en R.
>> E deixe-me amosar-lle apoiar máquina vector.
Esta é outra realidade común técnica en aprendizaxe de máquina.
É moi semellante aos modelos lineais, pero usa o que se chama un método de núcleo.
E imos ver como ben que fai.
Así, esta é moi semellante á forma como ben unha rede neuronal desempeña,
pero é moito máis suave.
E esta é baseado fóra de what-- como SVMs traballo.
>> Polo tanto, esta é só unha moi resumo rápido dalgunhas
das funcións internas que pode facer e tamén un pouco da explotación de datos.
Entón deixe-me ir adiante e volver para os diapositivas.
>> Entón, obviamente, este é non moi ampla.
E iso é realmente só un teaser mostrando-lle o que realmente pode facer en R.
Entón, se quere só de para saber máis, aquí
son unha banda de diferentes recursos.
>> Entón, se desexa libros didácticos ou está só lle gustaba de ler cousas en liña,
entón que é un fantástico un por Hadley Wickham,
que tamén creou todos estes paquetes moi legal.
Se che gusta de vídeos, a continuación, Berkeley ten un Bootcamp incrible
iso é several-- ese é o tipo de lonxitude.
E vai te ensinar case todo o que quere saber sobre R.
>> E do mesmo xeito, non hai Codeacademy e todas estas outro tipo
sitios de interactivos.
Eles están recibindo common-- cada vez máis común.
Entón iso é moi semellante ao Codeacademy.
E, finalmente, se acaba de quere comunitario e axudar,
estes son unha banda de cousas que podes ir.
Obviamente, aínda usar listas de correo, só
como case todos os outros comunidade linguaxe de programación.
E #rstats, este é nosa comunidade Twitter.
Isto é bastante común.
E entón o usuario!
É só a nosa conferencia.
>> E despois, claro, pode usar todas esas outras cousas Q & A,
como Stack overflow, Google, e, a continuación, GitHub.
Porque a maioría destes paquetes e un lote da comunidade
será centrada en torno a desenvolver código porque é de código aberto.
E iso é só moi bo no GitHub.
E, finalmente, pode contactar-me se só ten algunha preguntas rápidas.
Así, pode me atopar en Twitter aquí, meu sitio, e só o meu e-mail.
Polo tanto, esperamos, que era something-- só un teaser curto
que R é realmente capaz de facer.
E espero que, só confía esas tres conexións
e mira o que pode facer máis.
E eu creo que é exactamente sobre iso.
Grazas.
>> [Aplausos]