>> [Възпроизвеждане на музика]
Дъстин TRAN: Здравейте.
Моето име Дъстин.
Така че аз ще се представя Анализ на данни в R.
Само малко за себе си.
В момента съм студент в инженерно-приложни науки.
Уча пресечка на машинно обучение и статистика
така анализ на данни в R е наистина фундаментално значение за това, което
Аз правя ежедневно.
>> И R е особено добре за анализ на данни
защото това е много добра и отговаря на прототипи.
И обикновено, когато правиш някакъв вид за анализ на данни, много от проблемите,
Ще когнитивно.
И така, просто искам да имам някои наистина добър език, който
е само добро за правене вградени функции, за разлика
да се налага да се справят с ниски неща ниво.
Така че в началото, аз съм просто ще да се въведе това, което е R, защо
Искате ли да го използвате, и След това отиде в някои демо,
и просто отидете от там.
>> Така че това, което е R?
R е просто един език, разработен за статистически изчисления
и визуализация.
И така, какво означава това е, че това е много отлично език
за всеки вид на нещо, което се занимава с несигурност или визуализация на данни.
Така че имате всичко това вероятностни разпределения.
Там ще бъде вградени функции.
Вие също така ще имате отлично заговор пакети.
>> Python е друг конкуриращи език за данни.
И едно нещо, което аз намирам, че R е много по-добре е визуализация.
Така че това, което ще видите в демото като добре е просто един много интуитивен език
че просто работи изключително добре.
Също така е безплатна и с отворен код, като е друг добър език предполагам.
>> И тук, куп просто ключови думи хвърлят по вас.
Това е динамичен, което означава, ако имате специфичен вид назначен обект
отколкото просто ще го променя в движение.
Това е мързелив, така че е умно как го прави изчисления.
Функционално което означава, че наистина може да работи на базата на разстояние от функции, така anything--
каквато и да е манипулация сте прави, то ще бъде на базата на разстояние функции.
>> Така двукомпонентни оператори, например, са само по своята същност функции.
И всичко, което започваш да направите, е да
Ще се избяга сама функции.
И тогава обектно-ориентирано, както добре.
>> Така че тук е XKCD парцел.
Не само, защото аз се чувствам като XKCD е от основно значение за всеки вид
на представяне, а защото Имам чувството, че това наистина
чукове точката, че много от най- време, когато правиш някаква информация
анализ, че проблемът не е толкова много, колко бързо минава,
но колко време ще вземете да програмирате задачата.
Така че тук е просто анализира дали стратегия А или В е по-ефективно.
Това ще бъде нещо, което сте
ще се справят много с в сортиране на ниско ниво езици
когато имаш работа с грешки SEG, заделяне на памет, инициализации,
дори и вземане на вградени функции.
И всичко това се обработва много, много елегантно в R.
>> Така че просто да чука тази точка, най-голямата пречка
ще бъде познавателна.
Така анализ на данни е много трудно проблем.
Независимо дали сте прави машинно обучение или сте
прави точно някакъв вид основния проучване на данните,
вие не искате да имате да вземе документ
и след това се компилира нещо, всеки път, когато
Искам да видя какво колона изглежда, какво конкретно вписвания в матрица
прилича.
Така че просто искате да имате някои наистина приятен интерфейс
можете да изпълните една проста функция че индексите на каквото
искате и просто го стартирате от там.
И трябва домейн специфични езици за това.
И R наистина ще ви помогне да се определи проблем и решаването му по този начин.
>> Така че тук е диаграма, показваща програмиране Популярността на R, тъй като е отишъл с течение на времето.
Така че, както виждате, като 2013 или така че просто взривен значително.
И това е точно заради това огромна тенденция в технологичната индустрия
за големи данни.
Също така, не само технологията промишленост, но наистина
всяка индустрия that-- защото много от отраслите
са нещо фундаментално значение за опитвайки се да реши тези проблеми.
И обикновено, можете да имате един добър начин за измерване на тези проблеми
или дори да ги дефинира или решаването им с помощта на данни.
Така че аз мисля, че точно сега R е 11-ти Най-популярният език в TIOBE
и това е било расте, тъй като тогава.
>> Така че тук е малко повече Гостите на R. Тя има
огромен брой опаковки и за всички тези различни неща.
Така че всеки път, когато има определен проблем, най-
на път R ще има че функцията за вас.
Така че независимо дали искате да изгради някаква машина
учене алгоритъм, наречен Random Forest или дърво на решенията,
или дори да се опитвам да взема средната стойност на функция или някое от тези неща,
R ще има това.
>> И ако ти пука за оптимизация, едно нещо, което е обща
е, че след като сте готови прототипи някакъв език на високо ниво,
ще хвърлят че in-- просто ще порт, който през
до известна език на ниско ниво.
Каквото е добро за R е, че след като сте направи го на прототипи, можете да стартирате C ++,
или Fortran, или който и да е от тях по-ниско ниво от тях директно в R.
Така че това е един наистина приятна функция за R,
ако наистина ви е грижа за точката оптимизация.
>> И това е също много добър за уеб визуализации.
Така D3.js, например, е Предполагам, че още един семинар
че ние, представен днес.
И това е наистина страхотно за правене на интерактивни визуализации.
И D3.js предполага, че имате някакъв вид данни, които трябва да бъдат изобразени
и R е един чудесен начин да бъде в състояние да направи Анализът на данните, преди да го експортирате
към D3.js или дори просто стартирате D3.js команди в самата R,
както и всички тези други библиотеки, както добре.
>> Така че това беше просто въвеждането на какво е R и защо може да го използвате.
Така че да се надяваме, аз съм сте убедени нещо
около просто се опитва да види какво е искал.
Така че аз ще отида напред и проверете някои основи за R обекти
и това, което наистина можеш да направиш.
>> Така че тук е просто куп математика команди.
Така казват you're-- искате да се изгради език на себе си и просто искате
да има един куп различни инструменти.
Всякакъв вид работа смятате, че бихте искам, е до голяма степен ще бъде в R.
>> Така че тук е 2 плюс 2.
Тук е 2 пъти пи.
R има куп вградени константи че често можете да използвате като пи, д.
>> И тогава, ето 7 плюс runif, така runif 1.
Това е функция, която е генерира един случаен униформа 0-1.
И тогава там е 3 на степен 4.
Има квадратни корени.
>> Има дневник.
Така влезте ще направи база експоненциално от само себе си.
И тогава, ако посочите база, след това можете да правите каквото искате база.
И тогава ето някои други команди.
Така че имате 23 мод 2.
След това имате остатъка.
След това имате научна нотация, ако вие също
искам да направя само още и по-сложни неща.
>> Така че тук е задача.
Така че типичните задачи в R се извършва със стрелка
така че е по-малко от и след тирето.
Така че тук аз съм просто възлагане 3 на променливата Val.
>> И тогава аз съм отпечатване Вал и след това да го отпечатва три.
По подразбиране в R преводач, той ще отпечата неща за вас
така че не е нужно да се уточни отпечатате Вал всеки път, когато искате да отпечатате нещо.
Можете просто да направя Вал и След това той ще направи това за вас.
>> Също така, можете да използвате равна на технически като оператор за присвояване.
Има леки нюанси между използването на стрелката
оператор и равенство оператор за задания.
Предимно по условие, всеки Просто ще използва оператора на стрелката.
>> И тук, аз съм възлагане тази наклонена системата наречена 1 дебелото черво 6.
Това създава вектор от 1 до 6.
И това наистина хубаво, защото след това просто възлага на вектора на Вал
и който работи по себе си.
>> Така че това вече се случва от single-- много интуитивен данни
структура на само два пъти на някакъв вид тип във вектор
и които ще се съберат всички скаларни стойности за вас.
Така че, след като се започне от скаларна, можете имаме R обекти и това е вектор.
Вектор е някакъв вид колекция от същия тип.
Така че тук са един куп вектори.
>> Така че това е цифров.
Число е начин да се каже двойно R е.
И така, по подразбиране, всеки брой ще бъде двойно.
>> Така че, ако имате в 1,1, 3, отрицателно 5.7, сла е функция.
Това конкатенира трите числа във вектор.
И това ще be-- така че ако забележите 3 от само себе си,
Обикновено ги смятате че това е като цяло число,
а защото всички вектори са от същия тип,
това е вектор на двойки или число в този случай.
>> rnorm е функция, която генерира стандартното нормално variables--
или стандартни нормални стойности.
И аз съм като посочва две от тях.
Така че аз правя rnorm 2, възлагане, които да разработчиците, а след това аз съм отпечатване разработчиците.
Така че това са само две произволни нормални стойности.
>> И тогава цели числа, ако го направите те е грижа за цели числа.
Така че това е само за паметта разпределение и спестяване на памет размер.
Така че вие ​​ще трябва да добавите Вашите номера от столицата L.
>> Като цяло, това е Историческият нотация R е
за нещо, наречено дълго цяло.
Така че по-голямата част от времето, вие ще да се занимават с двойки.
И ако някога ще по-късно за оптимизиране на кода си,
можете просто да добавите тези L'S след или по време на нея
ако сте като предсказателни за това, което започваш да направя тези променливи.
>> Така че тук е вектор характер.
Така че, отново, аз съм слепване три струни и този път.
Забележете, че двойни струни и единични струни са едни и същи в R.
Така че имам Артур и Марвин и така когато съм го отпечатате, всички от тях
Ще покажем двойни струни.
И ако вие също искате да включите на двойна или единична низ
във вашите герои, след което можете да или редува вашите струни.
>> Така че Марвин за втори елемент, това е
Ще ви show-- Просто трябва двойни струни
и след единична връв Така че това е променлив.
В противен случай, ако искате да използвате двойно оператор низ в двойна низ
когато сте го обявява, а след това можете просто да използвате оператора за евакуация.
Така че направете двойна низ обратно наклонена черта.
>> И накрая, ние има логически вектори.
Така logical-- толкова вярно и неверни, и те са
ще бъде с главни букви.
И след това, отново, аз съм слепване ги и след това ги разпределя за bools.
Така bools ще покаже можете TRUE, FALSE и TRUE.
>> Така че тук е векторни индексиране.
Така че в началото, I съм като един function--
това се нарича sequence-- последователност от 2 до 12.
И аз съм като последователност от 2.
Така че това ще направя 2, 4, 6, 8, 10 и 12.
И тогава, аз съм индексиране да получи третия елемент.
>> Така че едно е да имате предвид, е че г са като започва от 1.
Така валс 3 ще даде можете третия елемент.
Това е нещо различно от другите езици, където тя започва от нула.
Така че в C или C ++, например, вие сте Ще получите Четвъртият елемент.
>> И тук е валс 3-5.
Така че едно нещо, което е наистина страхотно е, че
може да генерира временни променливи вътре и след това просто да ги използвате в движение.
Така че тук е 3-5.
Така че аз съм генериране вектор 3, 4 и 5 и след това
Аз съм индексиране да получите трета, четвърто, и пето елементи.
>> Така че по подобен начин, можете да абстрактно това просто да си направя
каквато и да е вектор който ви дава индексиране.
Така че тук е валс и след това първо, трето и шесто елементи.
И тогава, ако искате да се направи допълнение,
така че просто правя минуса след това и че ще
ти дам всичко, което не е най- първата, третата или шестия елемент.
Така че това ще бъде 4, 8 и 10.
>> А ако искате да получите дори по-напреднали,
можете да свързвам Булева вектори.
Така че този форум ще ви дам тази Булева вектор с дължина 6.
Така представител TRUE запетая 3.
Това ще повторя TRUE три пъти.
Така че това ще ви даде вектор Правилно, правилно TRUE.
>> Rep FALSE 4-- това ще ви даде вектор на фалшиви, неверни, фалшиви, неверни.
И тогава в ще се слеят тези две Booleans заедно.
Така вие ще получите три TRUEs и след четири FALSEs.
>> Така че, когато индекса валс, че си Ще получите Правилно, правилно вярно.
Така, че ще ходи да се каже, да, Искам тези три елемента.
И тогава с невярно съдържание, неистински, FALSE, FALSE ще
да се каже, не, аз не искам тези елементи така че няма да ги върне.
>> И предполагам, че всъщност има правописна грешка тук защото това се казва, повторете TRUE 3
и повторете FALSE 4, и технически, можете само шест елемента, така повтарят неверни,
тя трябва да бъде повторение FALSE 3.
Мисля, че R е също достатъчно такива умни че ако просто укажете 4 тук, след това
тя дори няма грешка навън.
Тя просто ще ви даде тази стойност.
Така че просто ще игнорира, че четвъртото FALSE.
>> Така че тук е векторни задача.
Така set.seed-- това само постила семена за псевдослучайни числа.
Така че аз съм за създаване на потомство, за да 42, което означава, че ако мога да генерирам
три произволни нормално стойности, а след това, ако
тичам set.seed по своему компютър, като използвате една и съща стойност 42,
След това можете да получите Същите три произволни обичайното.
>> Така че това е наистина добър за възпроизводимост.
Обикновено, когато правиш някои сортиране на научен анализ,
вие ще искате да зададете на семето.
По този начин други учени може просто възпроизвеждат точно същия код вие сте
прави, защото те ще имат точните същите случайни величини that-- или случайна
ценности, които сте сключили, както и.
>> И така, на векторни заданието Тук се показва на Vals 1-2.
Така че е необходимо първите два елемента на валс и след това да ги възлага 0.
И след това, можете да просто правя на Подобно нещо с Booleans.
>> Така валс не е равно на 0-- тази воля ви дам един вектор FALSE, FALSE, TRUE
в този случай.
И след това, че ще каже някоя на тези индекси, които са верни,
След това то се случва да възложите този до 5.
Така че е необходимо третия елемент тук и след това да го възлага на 5.
>> И това е много хубаво в сравнение с езици от ниско ниво
където ще трябва да се използва за електрически вериги да направите всичко това векторни неща
защото това е просто много интуитивен и това е една една подложка.
И това, което е страхотно за векторни нотация
е, че в R, те са нещо като вградена, така че те са почти толкова бързо,
както правят в език на ниско ниво, както противопоставя на вземане на за линия в R
и след като я да направя самата динамична индексиране.
И това ще бъде по-бавно, отколкото правите този вид на векторни нещо
където той може да го направи паралелно, когато тя го прави в вдявате основно.
>> Така че тук е векторни операции.
Така че аз съм генериране на стойност 1-3, определяне че да vec1, 3 до 5, vec2,
добавянето им заедно.
Той ги добавя компонент-мъдър, така това е един плюс 3, 2 плюс 4, и така нататък.
>> vec1 пъти vec2.
Това умножава две компонентни стойности мъдър.
Така че това е един пъти 3, 2 пъти 4, и след това 3 пъти с по 5.
>> И след това, по същия начин можете да направите comparisons-- логически сравнения.
Така че това е фалшиви фалшиви вярно в това 1 случай, защото не е по-голяма от 3,
2 е не по-голяма от 4.
Това е, предполагам, друга правописна грешка, 3 е определено, не по-голямо от 5.
Да.
И така, може просто да направи всичко тези прости операции
защото им е наследил от самите класове.
>> Така че това е само на вектора.
И това е нещо като най-основното R обект, защото даден вектор,
можете да се изгради по-напредналите предмети.
>> Така че тук е една матрица.
Това е по същество черпене на това, което една матрица е само по себе.
Така че в този случай, това е три различни вектори, като всеки един е колона,
или можете да го разгледа като всяка една е подред.
>> Така че аз съм съхраняване матрица от 1 до 9 и след това аз съм уточнява 3 реда.
Така че 1-9 ще ви дам един вектор 1, 2, 3, 4, 5, 6, и по целия път до 9.
>> Едно нещо е да също да помним, е, че R магазини стойности в колона-голяма формат.
Така че, с други думи, когато видиш 1 до 9, то се случва да съхранявате them--
това ще бъде 1, 2, 3 в първата колона,
и след това ще направя 4, 5, 6 във втората колона,
и след това 7, 8, 9, в третата колона.
>> А ето и някои други общи функции можете да използвате.
Така че слабата мат, това ще ви даде размерите на матрицата.
Това ще ви се върне вектор на измерение.
Така че в този случай, тъй като нашата матрица е 3 от 3,
това ще ви даде по- числов вектор, който е 3 3.
>> И тук е просто показване умножение на матрици.
Така обикновено, ако просто правим asterisk-- така мат звездичка mat--
това ще бъде компонент-мъдър операция
или това, което се нарича продуктът Hadamard.
Така че това ще направи всеки съставен елемент,-мъдър.
Все пак, ако искате матрица multiplication--
така се умножи първите пъти редови Първата колона втората матрица на
и така on-- ще използвате процента тази операция.
>> И Т на мат е просто операция за транспониране.
Така че аз казвам, вземете транспонират матрицата, умножете го по матрицата
себе си.
И след това ще се върне към вас още 3
от 3 Матрица, показваща продукта, което бихте искали.
>> И така, това е матрица.
Ето какво се нарича информационен цикъл.
A данни рамка можеш да се сетиш, както матрица, но всеки самата колона
ще бъде от различен тип.
>> Така че това, което е наистина страхотно за данни кадъра е, че само по себе си анализ на данни,
започваш да имате всичко това разнородни данни и всичко това наистина
разхвърлян неща когато всяка от колоните себе си може да бъде от различни видове.
Така че тук искам да кажа създадете данни рамка, направи цели числа от 1 до 3,
и след това да има вектор характер.
Така че аз може да индексира чрез всяка от тези колони
и тогава ще получите самите стойности.
И вие можете да направите някаква на операции по данни рамки.
И през повечето време, когато сте прави анализ на данни или някакъв вид
на предварителна обработка, вие ще бъдете работа с тези структури от данни
където всяка колона ще да бъде от различен тип.
>> Накрая, така че те по същество са просто четирите основни обекти в Списък R.
просто ще събира всякаква други предмети, които искате.
Така тя ще се съхранява тази в едно променлива, която можете лесно да получите достъп.
>> Така че тук, аз съм като списък.
Аз казвам, че нещата се равнява на 3.
Така че аз ще има един елемент списъка, и това се нарича неща,
и то се случва да има стойност 3.
>> Също така мога да се създаде една матрица.
Така че това е от 1 до 4 и край ред е равно на 2, така че 2 от 2 матрица.
Също така в списъка и тя се нарича мат.
moreStuff, символен низ, и дори още един списък в себе си.
>> Така че това е списък, който е на 5 и мечка.
Така че тя има стойност 5 И има символен низ мечка на
и това е списък вътре списък.
Така че можете да имате тези рекурсивни неща където
имате another-- а напишете в рамките на вида.
Така че по подобен начин, че може да има една матрица вътре друга матрица и така нататък.
И списък е просто един добър начин за събиране и обобщаване на
всички тези различни предмети.
>> И най-накрая, тук е просто да помогне в случай, това е просто преминахме много бързо.
Така че всеки път, когато сте объркани за някаква функция,
можете да направите помощ на тази функция.
Така че можете да направите помощ матрица или матрица, въпросителен знак.
И помощ и въпросителен знак са просто синоним на едно и също нещо
така че те са псевдоними.
>> LM е функция, която Просто прави линеен модел.
Но ако просто нямат представа как това произведения, може просто да помагат на л.м.
и че ще ви дам някои вид документация, която
изглежда нещо като мъж на страницата на Unix, където
имате кратко описание на това, което това е така, и това, което неговите аргументи са,
това, което го връща, а само съвети за това как да го използвате, и някои примери.
>> Така че нека да вървим напред и шоу някои демо на използване R. OK.
Така че аз отидох много бързо само данните
структури и някакъв вид на op-- някои от операциите.
Ето някои от функциите.
>> Така че тук аз съм просто ще за определяне на функция.
Така че аз също съм с Оператор за присвояване тук,
и след това, което казвам, тя декларира като функция.
И тя е на стойност х.
Така че това е някаква стойност, която искате и аз отивам да се върне х самата.
Така че това е функцията за самоличност.
>> И най-хубавото при тази в сравнение с другите езици
и още на ниско ниво езици е, че х
може да бъде от всеки самия тип и той ще се върне този тип.
Така че можете да imagine-- така че нека ми само да стартирате тази бързо.
Извинете.
>> Така че едно нещо, което трябва да споменем е, че този редактор Аз съм с
се нарича rstudio.
Това е, което се нарича един IDE.
И едно нещо, което е много хубаво за това
е, че тя включва много от неща, които искам да направя в R от само себе си
Просто много интуитивно.
>> Така че тук е преводач конзола.
Така че по подобен начин, можете да получите тази конзола сурово само чрез правене на капитала R.
И това е точно същото като на конзолата.
Така че аз може просто да направи ID функция х, х, х.
И then-- и след това ще се оправи.
>> Така rstudio е страхотно защото има конзолата.
Тя също има документи искате да се движат по.
И тогава тя има някои променливи които можете да видите в среди.
И тогава, ако имате да се направи бизнес, тогава
просто да го видя тук, за разлика от управление на всички тези различни прозорци
сами по себе си.
>> Аз всъщност лично ползване Vim, но аз Чувствам се като rstudio е отлична просто
за получаване на добра идея за това как да използвате R. Обикновено,
когато се опитвате да научите някои нови задачи,
вие не искате да се справя твърде много неща наведнъж.
Така че R е просто very-- rstudio е един много добър начин на живот R
без да се налага да се справят с всички тези други неща.
>> Така че тук Бягам ID здравей.
Това връща здравей.
ID 123.
Тук е вектор на числа.
Така че по подобен начин, защото можете да предприеме някаква стойност,
можете да направите връщане ID на X, така че се връща 1234 и 5.
>> И нека само да ви покажа, че това наистина е цяло число.
И по същия начин, ако го направите клас ID х, то се случва да бъде цяло число.
И след това, можете също Сравняват се двете и това е вярно.
Така че аз съм проверка, ако ID на х равнява се равнява на х и предизвестие
че тя дава две TRUEs.
Така че това не казва, са двата обекта идентични,
но всеки от текстовете, в рамките на векторите са идентични.
>> Ето bounded.compare.
Така че това е малко по-сложно в това, че има, ако състоянието и друго
и след това са нужни двама аргументи в даден момент.
Така че х е от всякакъв тип.
И аз казвам, че това Вторият аргумент е.
Това може да бъде всичко, както добре.
Но по подразбиране, то се случва да вземе 5, ако не посочите нещо.
>> Така че тук аз ще кажа, ако х е по-голяма от.
Така че, ако не укажете, тя казва, че ако х е по-голям от 5,
След това аз ще се върне TRUE.
иначе, аз отивам да се върне FALSE.
Така че нека да продължа напред и да определим това.
>> И сега аз ще тичам bounded.compare 3.
Така че, казва се 3 по-малко than-- 3 е по-голямо от 5.
Не, това не е толкова невярно.
>> И bounded.compare 3 и аз отивам да го сравни с помощта на равно на 2.
Така че сега аз казвам, да, сега съм искам да е нещо друго.
Така че аз ще кажа, че трябва да бъде 2.
>> Мога да го направите нещо бройна система или Казвам се равнява на 2.
Това е по-разбираемо в това, когато сте
поглед към тези наистина сложни функции, които
да изисква няколко arguments-- и това може да бъде десетки oftentimes-- просто казвам
а е равно на 2 е по-разбираемо за вие, така че по-късно и в бъдеще
вие ще знаете какво правите.
>> Така че в този случай, аз съм поговорка е 3-голямо от 2.
Да, това е.
И по същия начин, не мога просто извадете това и да кажа, е 3-голямо от 2
където е равно на 2.
И това е вярно.
Да?
>> АУДИТОРИЯ: Вие сте Изпълняващият ред по ред?
>> Дъстин TRAN: Да, аз съм.
Така че това, което правя тук, е като този текст document--
и това, което е страхотно за rstudio е, че Мога само да изпълните short-- клавишна комбинация.
Така че аз правя Control-Enter.
>> И тогава, аз съм като на Онлайн в текстов документ
и след това се поставя в конзолата.
Така че тук искам да кажа, bounded.compare и аз правя Control-X.
Така че не мога просто да тичам и тук.
И след това, че ще взема линия и след това го сложи тук.
И след това по същия начин, не мога да се налага да я тук.
И тогава той просто ще поддържа определяне линиите в конзолата така.
>> И ако вие ще забележите, къдрава скоби са там точно като в C синтаксис.
x-- ако, ако условието е също ще използвате скоби и след това
можете да използвате друго.
Другото е друго, ако.
Така че това ще бъде х равнява се равнява на, например.
И тогава аз ще върнете нещо тук.
>> Забележете, че има два различни нещата тук, че се случва.
Един от тях е, че тук съм уточняват връща стойност TRUE.
Тук Просто казвам, х.
Така R ще обикновено по подразбиране приеме последната arguments--
или да вземе последния ред на кода, и това ще бъде това, което е върнал.
Така че тук това е същото нещо като това завръщане х.
>> И само за да ви покажа.
И след това, че ще работи точно като тази.
Така че нека да продължа с това.
>> Така че, ако друго.
И наистина, аз може да се върне всичко бих искал.
Така че аз дори не трябва да се връщане Booleans през цялото време,
Мога само да се върне нещо друго.
Така че мога да направя замяна мечка.
>> Така че, ако х е равно равнява на, тя ще се върне мечка.
В противен случай, той ще се върне TRUE.
Също така мога да направя вектор или наистина нещо.
>> И обикновено в статично напечатани езици,
ще трябва да посочите тип тук.
И забележи, че тя може да бъде само нещо.
И R е достатъчно интелигентен, че тя Просто ще направя това и това ще работи добре.
>> Така че нека да се определи това.
Unexpected-- ох съжалявам.
Той трябва да бъде фигурна скоба тук.
OK.
Cool.
Добре.
Така че сега нека да сравнявате 3 и се равнява на 3.
Така че трябва да return-- yeah-- мечка на стойност.
>> Така че сега е по-общо нещо е като какво да кажем за другите структури от данни.
Така че имате тази функция.
Това ще работи върху всякакъв вид на стойност като 3 или някой от цифровите,
С други думи, двойно.
>> Но какво да кажем нещо като вектор.
Така че това, което се случва, ако do-- така че аз съм ще възложи Вал, да речем, 4-6.
Така че, ако се върне тази, тази е вектор от 4, 5, 6.
>> Сега нека да видим какво ще стане ако го направя bounded.compare Вал.
Така че това ще ти дам 15 1251.
Така че, с други думи, тя казва ако се вгледате в това състояние
така се казва х е по-малко от една или нещо такова.
Така че това е малко по- объркващо, защото сега
просто не знам какво става.
Така че предполагам, едно нещо, което е наистина добре за просто се опитва да трасира
е, че можете просто да направите Вал е по-голяма от една и да видим какво се случва там.
>> Така val-- а е по подразбиране 5 така нека просто да Val-голямо от 5.
Така че това е вектор фалшиви фалшиви TRUE.
Така че сега, когато търсите най- това, че ще ходи да се каже, ако,
и след това ще ви даде тази е вектор на фалшиви фалшиви TRUE.
>> Така че, когато мине тази в R, R няма представа какво правиш.
Тъй че очаква един единствен стойност, която е булева, и сега
Ако пък го дава вектор на Booleans.
Така че по подразбиране, R е просто Ще кажа какво по дяволите,
Отивам да се предположи, че сте Ще взема първия елемент тук.
Така че аз ще say-- Отивам да се предположи, че това е лъжа.
Така че това ще кажа Не, това не е правилно.
>> По същия начин, това ще се равнява Val равнява на.
Не, съжалявам 5.
И тя също ще бъде фалшива, както добре.
Така че това ще кажа не, Не е вярно, както и това, че е
ще се върне тази последна една.
>> Така че това е било нещо добро или лошо нещо, в зависимост от това как сте го видите.
Защото, когато си създаването на тези функции,
всъщност не знам какво става.
Така че понякога, което бихте искали за грешка, Или може би просто искате предупреждение.
В този случай, R не направи това.
Така че това е наистина до ви на базата на разстояние от това, което
смятате езика трябва да се направи в този случай
ако премине във вектор на Booleans когато правиш едно, ако състояние.
>> Така че нека да кажем, че сте имали оригинала един с друг, ако се върне TRUE и сте
ще върне FALSE.
Така че един от начините за абстрахиране това е да се каже, че
дори не се нуждаят от тази условно нещо.
Друго нещо, което може да направите, е просто връщане на самите стойности.
Така че, ако забележите, ако направя Вал е по-голям от 5,
това ще се върне вектор фалшиви фалшиви TRUE.
>> Може би това е, което ви искам за bounded.compare.
Вие искате да се върнете вектор на Booleans където всеки от сравнява стойностите
за себе си.
Така че може просто да bounded.compare функция х, а се равнява на 5.
И тогава вместо да правиш това, ако друго условие,
Аз съм просто ще се върне х е по-голямо от 5.
Така че, ако това е вярно, тогава тя ще се върне TRUE.
И след това, ако не е, това е ще върне FALSE.
>> И това ще работи за всеки от следните структури.
Така че мога да bounded.compare в 1 6 или 9 и тогава аз ще кажа едно е равно на 6,
например.
И след това ще ви даде правилната Булев
вектор, че сте проектиране.
>> Така че тези, които са само на функции и сега ме остави само
ви покажа някои интерактивни визуализации.
Аз не мисля, че действително има Wi-Fi тук, така че нека просто отидете напред
и да пропуснете тази една предполагам.
>> Но едно нещо, което е готино обаче е, че ако просто
искате да тествате куп различни команди данни,
има един куп различни набори от данни които вече са предварително инсталирани в R.
Така че един от тях е нарича набора от данни на ириса.
Това е един от най-добре познатите такива в машинно обучение.
Обикновено просто ще направя някаква тестовете, за да видите, ако вашият код работи.
Така че нека просто се провери какво е ирис.
>> Така че това нещо се случва да бъде рамка за данни.
И това е нещо отдавна, защото Току-що отпечатани на ириса.
Той е отпечатване на цялото нещо.
Така че тя има всички тези различни имена.
Така ириса е колекция на различни цветя.
В този случай, това е казваше ви вида на играта,
всички тези различни ширини и дължини на СЕПАЛ и листенца.
>> И така, по принцип, ако искате да отпечатате на ириса,
Например, вие не искате да го има направи всичко това, защото това може да поеме
цялата си конзола.
Така че едно нещо, което е наистина хубаво е функцията на главата.
Така че, ако просто правя главата ирис, това ще ви даде
първите пет реда, или шест предполагам.
И тогава и вие, може просто да посочите тук.
Така 20-- това ще даде ви първите 20 реда.
И аз всъщност е вид на изненадан, че този
ми даде шест така че нека вървим напред и проверете iris-- или главата, съжалявам.
И тук ще дам можете документацията
от това, което главата на стойност прави.
Така че той се връща на първата или последния от един обект.
И тогава аз ще Посетете настройките по подразбиране.
И след това го казва по подразбиране метод главата х и п е 6L.
Така че това се връща първите шест елемента.
И по същия начин, ако забележите тук, I не трябва да се уточни, п е 6.
По подразбиране той използва шест, предполагам.
И тогава, ако искам да укажете определен стойност, тогава мога да видите, че както добре.
>> Така, че е някои прости команди и ето още един, който е just-- добре,
I can-- това всъщност малко по-сложна,
но това само ще отнеме класа на всяка колона на набора от данни на ириса.
Така че това ще ти покажа това, което всеки един от тях колони са от гледна точка на техните видове.
Така чашелистче дължина е цифров, чашелистче ширина е цифров.
Всички тези стойности са само с цифри защото можете да кажете от тази информация
структурира това са всичко ще цифрова.
>> И колоната Видове ще бъде фактор.
Така че нормално, човек би си помислил, че това е като символен низ.
Но ако просто правим irisSpecies, и след това аз ще направя главата 5,
и това се случва, за да отпечатате извън първите пет стойности.
>> И след това забележите това ниво.
Така че това е saying-- това е начин R е да има категорични променливи.
Така че, вместо просто като символни низове,
тя има нива уточняващи кои от тези неща са.
>> Така че нека да кажем irisSpecies 1.
Така че това, което искате да направите тук е, че съм подмножества на този вид колона.
Така че това е на Видове колона и след това
индексира да получат първия елемент.
Така че това трябва да ви даде setosa.
И това също дава нива тук.
>> Така че можете да се сравни тази на setosa характер
и това не се случва за да е истина, защото един
е от различен тип от другия.
Или аз предполагам, че е вярно, защото R е по-интелигентен от това.
И тя изглежда в този и след това казва, може би това е, което искате.
Така че това ще кажа на героя низ setosa е същият като този.
И тогава подобен начин можете да Също така вземете само тези като така нататък.
>> Така че това е просто някакъв вид бързи команди на набора от данни.
Така че ето малко проучване на данните.
Така че това е малко по- ангажирани с анализа на данните.
И това е взето от някои Bootcamp в R в Бъркли.
>> Така библиотека чужд.
Така че аз ще се зареди в библиотека, която се нарича външна.
Така че това ще ми даде read.dta така се предположи, че имам този набор от данни.
Това се съхранява в ток работна директория на моята конзола.
Така че нека просто да видим какво работната директория е.
>> Така че тук е моята работна директория.
И прочетете дот данни, този нещо, се казва този файл
се намира в папката на данни тази текущата работна директория.
И read.dta това не е команда по подразбиране.
Предполагам, че го зарежда във вече.
IEI Предполага се заредих това във вече.
>> Но така read.dta не върви да бъде команда по подразбиране.
И затова вие ще трябва да се зареди в тази библиотека package--
този пакет, наречен чужд.
И ако вие не разполагате пакета, мисля,
чуждестранна е един от вградените.
В противен случай, можете също направя install.packages
и това ще инсталирате пакета.
И това ще ви даде R. Uh, не.
И тогава аз съм просто ще спре това, защото аз вече го има.
>> Но това, което наистина е много хубаво за R е, че управлението на пакетите
система е много елегантна.
Защото тя ще се съхранява всичко наистина добре за вас.
Така че в този случай, то се случва да съхранявате това, аз вярвам, тази библиотека тук.
>> Така че всеки път, когато искате да инсталиране на нови пакети,
това е толкова просто като правене install.packages
и R ще управлява всички опаковките за вас.
Така че не е нужно да се направи нещо в Python, където ще трябва външна опаковка
мениджъри като хартия Anaconda, където сте
doing-- инсталирате пакети извън Python
и след това се опитате да ги ползвате самостоятелно.
Така че това е наистина добър начин.
>> И install.packages изисква интернет.
Това отнема от сървър и хранилището, че
събира цялата пакети се нарича дървен матер.
И вие можете да определите какъв вид огледало За да свалите опаковките от.
>> Така че тук аз съм като този набор от данни.
Аз съм го прочетете в използването на тази функция.
Така че нека да вървим напред и да направим това.
>> Така че нека да приемем, че имате този набор от данни
и имате абсолютно Не знам какво е това.
И това всъщност идва доста често в промишлеността
където просто трябва тях тона и тона на разхвърлян неща
и те са изключително немаркирана.
Така че тук имам тази набор от данни и аз не знам
какво е толкова просто съм показващ да го проверите.
>> Така че аз ще направя с главата напред.
Така че проверете първата шестица колони от това, което този набор от данни е.
Така че това е състояние, pres04, и след това всички тези различни вид колони.
И това, което е интересно тук, предполагам, е, че
ще приемем, че това изглежда като някаква избори.
И предполагам, че просто от погледнете в файла
назове това е някаква колекция на данни за кандидатите или избирателите
които са гласували за конкретни президенти или президента кандидати
за изборите през 2004 г..
>> Така че тук е стойности 1, 2 така един начин за съхраняване
Кандидатите за президент са имената им.
В този случай, тя изглежда като те са само целочислени стойности.
Така 2004 г., е Bush спрямо Kerry Вярвам.
И сега, да речем, че просто не знам дали 1 отговаря на гъсталак или 2
съответства на Kerry или и така нататък и така нататък, нали?
>> И това е, само за мен, доста често срещан проблем.
Така че това, което можеш да направиш в този случай?
Така че нека да провери всички тези други неща.
>> членка, аз съм се предположи това идва от различни държави.
partyid, доходите.
Нека да разгледаме partyid.
Така че може би едно нещо, което може да направите, е да Посетете всяко едно от наблюденията
които имат partyid на Републиканската или демократ или нещо такова.
Така че нека просто погледнете какво partyid е.
>> Така че аз отивам да взема DAT и тогава аз ще съм
да направите това знак за долар Операторът, че го направих по-рано
и това ще подмножество на тази колона.
И тогава аз ще оглави тази в 20, само за да види как изглежда това.
>> Така че това е просто един куп национални агенции.
Така че, с други думи, вие трябва липсват данни за тези момчета.
Но вие ще забележите това DAT partyid е фактор
така че това дава различни категории.
Така че, с други думи, partyid да вземете Демократ, републиканец, Independent,
или нещо друго.
>> Така че нека да вървим напред и нека видим кои от тях is-- О, OK.
Така че аз ще подмножество да partyid и след това
Посетете кои от тях са Демократ, например.
Това ще ви даде Булева, огромен Булева на TRUEs и FALSEs.
>> И сега, нека да кажа, че искам да подмножество на тези момчета.
Така че това ще отнеме ми DAT и подмножество пред онези наблюдения
Трябва partyid равни равнява демократ.
И това е доста дълъг, защото има толкова много от тях.
Така че сега, аз отивам да оглави тази в 20.
>> И като забележите, се равнява на равни Интересно е това, че ти си
already-- сте в това число и на националните агенции.
Така че в този случай, че все още не може да се получи всякаква информация, защото сега имате Националните агенции
и просто искате да видите кои от наблюдение съответства на демократа
и не те липсват самите ценности.
Така че как ще се отървете от тези национални агенции?
>> Така че тук аз съм само с помощта на клавиша за увеличаване на моя курсора и след това казва движи.
И тогава тук аз съм просто ще да кажем is.na datpartyid.
Така че това и и ще се две различни булеви вектори
и да кажа, че това ще бъде Истина и лъжа например.
Така че ще направя този компонент-мъдър.
Така че тук аз казвам, че възприемането пакета данни, подгрупа
на тези, които отговарят на демократ, и премахване на някои от тях, които не са NA.
>> Така че това will-- следва ти дам нещо.
Нека да видим is.na.
Нека се опитаме is.na datpartyid.
И това трябва да даде you-- sorry-- просто Булева вектор.
И след това, защото това е толкова дълго, Отивам да подмножество до 20.
OK.
Така че това трябва да работи.
>> И това също ще бъде TRUEs.
Аха, значи грешка ми тук е, че I'm-- I използвате C ++ и R взаимозаменяемо така правя
тази грешка през цялото време.
The и оператора е Всъщност това, което желаете.
Вие не искате да използвате две амперсанди, само един.
OK.
>> Така че нека да видим.
Така че ние subsetted до partyid, където те са демократи
и те не са изчезнали ценности.
А сега нека да погледнем кои от тях са гласували за.
Така изглежда, че най- от тях са гласували за 1.
Така че аз ще отида напред и да кажа, че е Кери.
>> И по същия начин, можете да също да отидете на Републиканската
и да се надяваме, това трябва да ви даде 2.
Това е просто един куп различни колони.
И наистина, това е 2.
Така partyid цялата републиканска, повечето от тях са Гласувам за 2.
>> Така изглежда, че, просто като погледнете в това,
Републиканската ще бъде а very-- или partyid
ще бъде много голям фактор при определяне на
кой кандидат си Ще гласувам за.
И това е очевидно вярно като цяло.
И това отговаря на вашия интуиция, разбира се.
Така че изглежда, сякаш съм изчерпване на времето, така че
нека просто трябва да вървим напред и да се покаже някои бързи снимки.
Така че тук е нещо, което е малко по- по-сложно с визуализация.
Така че в този случай, това е един много прост анализ на просто проверка на това, което
президентът на '04 е.
>> Така че в този случай, нека да ви кажа, исках да отговоря на този въпрос.
Така че предполагам, че ние искахме да знаем гласуването поведение в изборите през 2004 г. за президент
и как това се различава от състезанието.
Така че не само искате да виж поведението на гласуване,
но искате да подмножество на всеки раса и вид обобщим, че.
И вие можете да кажете само от тази сложна система за означаване
че това е вид получаване мъгливо.
>> Така че един от по-напреднали R пакети че това също е вид скорошно
се нарича dplyr.
Така е и тази една точно тук.
И ggg-- ggplot2 е просто хубава начин за правене на по-добри визуализации
от вградения в едно.
>> Така че аз отивам да се зареди тези две библиотеки.
И тогава, аз ще отида напред и да стартирате тази команда.
Можете просто да се отнесем към това като черна кутия.
>> Какво се случва, е, че тази тръба оператор преминава в този аргумент
в тук.
Така че аз казвам, че група от DAT раса и след това президент 04.
И тогава, всички тези други команди се филтрира и след това се обобщават
когато правя брой и След това аз съм го заговор тук.
OK готино.
Така че нека да вървим напред и да виж как изглежда това.
>> Така че това, което се случва тук, е, че аз просто заговор всяко от състезанията и след това
кои от тях са гласували за.
И тези две различни стойности съответстват на 2 и 1.
Ако искате да сте по- елегантен, можете също
само да уточним, че 2 е Kerry-- или 2 е Буш, а след 1 е Кери.
И вие също може да има че в легенда.
>> И вие също може да се раздели на тези графики.
Защото едно е че, ако забележите,
това не е много лесно да се идентифицира кои от тези две стойности са по-големи.
Така че едно нещо, което бихте искали да направите е да се възползвам от тази синя зона
и просто да го премести тук, така че може да се сравни тези две рамо до рамо.
И аз предполагам, че е нещо, което нямат време да направя точно сега,
но това също е много лесно да се направи.
Можете просто да разгледа на човека страниците на ggplot.
Така че може просто да ggplot харесват че и прочетете в тази страница човек.
>> Така ме пусне просто бързо ви покажа някои готини неща.
Да вървим напред и да отидете to-- просто прилагане на машинно обучение.
Така че нека да кажем, че имаме тези три пакети, така че аз ще се зареди те инча
Така че това просто отпечатва някои информация след I зареден в нещо.
Така че аз казвам това read.csv, този набор от данни, а сега
Отивам да потърся и виж какво има вътре този набор от данни.
>> Така първите 20 наблюдения.
Така че аз просто трябва X1, X2, и Y. Така че изглежда като куп от тези стойности
са в границите от 20 до 80 може или така.
И след това по същия начин за X2 и след това това Y изглежда етикети 0 и 1.
>> За да проверите това, което мога просто правя X1 обобщение на данните.
И след това по същия начин за всички тези други колони.
Така обобщение е бърз начин на просто ви показва следните стойности.
О, съжалявам.
Този човек трябва да бъде Y.
>> Така че в този случай, постанови quantiles, медианите maxes, както добре.
В този случай, dataY, можете да видите че това е просто щеше да бъде 0 и 1.
Също така средната стойност се казваше 0.6, просто означава, че тя
Изглежда, че имам повече от 1s 0s.
>> Така че нека да вървим напред и шоу вие как изглежда това.
Така че аз съм просто ще се парцел това.
Нека да видим как да изчистите това.
О OK.
OK.
>> Така че това е това, което изглежда.
Така че изглежда като жълти I, посочени като 0, а след това червено съм посочил от 1 секунда.
Така че тук тя изглежда като етикетни точки и я
Изглежда, че сте просто исках някои сортиране на групиране по този въпрос.
>> И нека само да вървим напред и шоу ви някои от тези вградени функции.
Така че тук е LM.
Така че това е просто се опитвам за да се поберат на ред в това.
Така че това, което е най-добрият начин че може да се побере на ред, като
че е най-добре ще се разделят този вид на клъстери.
А в идеалния случай, може просто да видите че аз просто се изпълняват всичките тези команди
и след това, аз ще съм напред и да добавите линията.
>> Така че това изглежда като най-доброто предположение.
То е като най-добрата, която намалява грешката в опитва да се впише тази линия.
Очевидно е, че това изглежда вид добра, но това не е най-добрия.
И линейни модели, по- Като цяло, ще бъде
наистина страхотно за теория и просто някак на строителни основи на машината
учене.
Но на практика, ти започваш да се искам да направя нещо по-общо.
>> Така че може просто да пуснете нещо, наречено невронна мрежа.
Тези неща са все по-често.
И те просто работят фантастично за големи масиви от данни.
Така че в този случай, ние само have-- нека see-- имаме nrow.
Така nrow е просто казвам брой редове.
Така че в този случай, аз имаме 100 наблюдения.
>> Така че нека да вървим напред и да направи невронна мрежа.
Така че това е много хубаво защото аз може просто да се каже nnet
и след това аз съм регресира Y. Така че Y е, че колона.
И тогава тя регресира върху другите две променливи.
Така че това е по-къса нотация за X1 и X2.
>> Така че нека да вървим напред и да стартирате тази.
О, съжалявам.
Имам нужда да тече цялото това нещо.
И това е само отпечатване нотация за това колко бързо или не-бързо го
сближили.
Така изглежда, че се слеят.
Така че нека да вървим напред и печат вън как изглежда това.
>> Вижте тук е на снимката и тук е контур показва колко добре се вписва.
И това е just-- можете да видите това, че това е много, много хубаво.
Тя дори може да бъде прекомерно нагаждане, но можете да
отчете това с други техники като кръстосано валидиране.
И те също са вградени в R.
>> И нека само да ви покажа подкрепа вектор машина.
Това е още една наистина обща техника в машинно обучение.
Той е много подобен на линейни модели, но той използва това, което се нарича метод на ядрото.
И нека да видим колко добре, че е така.
Така че това е много подобен на начина, добре невронна мрежа изпълнява,
но това е много по-гладко.
И това е на базата на разстояние на what-- как SVMs работа.
>> Така че това е просто един много бърз преглед на някои
на вградените функции можете да направите както и някои от изследването на данни.
Така че нека просто отидете напред и да се върнете към слайдовете.
>> Така че очевидно, това е Не много изчерпателна.
И това наистина е само закачка ви показва това, което наистина може да се направи в R.
Така че, ако искате точно като да научите повече, можете
един куп различни ресурси.
>> Така че, ако сте любители на учебници или сте просто любители на четенето неща онлайн,
то това е фантастична един от Hadley Уикъм,
който също създаде всичко това наистина готино пакети.
Ако сте любители на видео, а след това Berkeley има едно страхотно Bootcamp
това е several--, че е нещо отдавна.
И това ще ви научи почти всичко, което бихте искали да знаете за R.
>> И по същия начин, има Codeacademy и всичко това друг вид
на интерактивни уебсайтове.
Те са също и получаване common-- повече и по-често.
Така че това е много подобен на Codeacademy.
И най-накрая, ако просто Искам Общността и да помогне,
това са куп неща, които можете да отидете.
Очевидно е, че ние все още използвате адресни списъци, просто
като почти всеки друг програмен език на Общността.
И #rstats, това е нашата общност Twitter.
Това е всъщност доста често.
И тогава потребител!
Е само на нашата конференция.
>> И след това, разбира се, можете, използвате всички тези други Q & A неща,
като Stack Overflow, Google, а след това GitHub.
Тъй като повечето от тези пакети и много от общността
ще бъде центриран около разработване код, защото е с отворен код.
И това е просто много хубаво на GitHub.
И накрая, можете да се свържете с мен, ако просто някакви бързи въпроса.
Така че можете да ме намерите на Twitter тук, моя сайт, и просто ми имейл.
Така че да се надяваме, че е something-- съвсем кратко тийзър
от това, което R е наистина в състояние да прави.
И да се надяваме, че просто вижте тези три връзки
и вижте какво можете да направите повече.
И аз предполагам, че става въпрос само за това.
Благодаря.
>> [Аплодисменти]