У овој лекцији о машинском учењу са сцикит-леарном научићемо различите аспекте овог изврсног Питхон пакета који нам омогућава да применимо једноставне и сложене могућности машинског учења на разнолике скупове података заједно са функционалностима како бисмо тестирали хипотезу коју установимо.
Пакет сцикит-леарн садржи једноставне и ефикасне алате за примену података и анализу података на скуповима података и ови алгоритми су доступни за примену у различитим контекстима. То је пакет отвореног кода доступан под БСД лиценцом, што значи да ову библиотеку можемо користити чак и комерцијално. Изграђен је на врху матплотлиб-а, НумПи-а и СциПи-а, тако да је свестране природе. Користићемо Анаконду са Јупитер бележницом да представимо примере у овој лекцији.
Шта пружа сцикит-леарн?
Сцикит-леарн библиотека се у потпуности фокусира на моделирање података. Имајте на уму да у сцикит-леарну нису присутне неке веће функционалности када је реч о учитавању, манипулисању и резимирању података. Ево неколико популарних модела које нам нуди сцикит-леарн:
- Груписање да групише означене податке
- Скупови података да обезбеди скупове података за испитивање и истражује понашање модела
- Цросс Валидатион за процену учинка надзираних модела на невиђеним подацима
- Методе ансамбла комбиновању предвиђања вишеструких надзираних модела
- Издвајање својстава до дефинисања атрибута у сликовним и текстуалним подацима
Инсталирајте Питхон сцикит-леарн
Само напомену пре започињања процеса инсталације, за ову лекцију користимо виртуелно окружење које смо направили следећом командом:
питхон -м виртуаленв сцикитизвор сцикит / бин / активирај
Једном када је виртуелно окружење активно, можемо инсталирати библиотеку панда унутар виртуелне енв тако да се могу извршити примери које следећи креирамо:
пип инсталирати сцикит-леарнИли можемо користити Цонда за инсталирање овог пакета следећом наредбом:
цонда инсталирати сцикит-леарнНешто слично видимо када извршимо горњу команду:
Када се инсталација заврши са Цонда, моћи ћемо да користимо пакет у нашим Питхон скриптама као:
увоз склеарнПочнимо да користимо сцикит-леарн у нашим скриптама за развој сјајних алгоритама за машинско учење.
Увоз скупова података
Једна од згодних ствари са сцикит-леарн-ом је та што долази са унапред учитаним скуповима података са којима је лако брзо започети. Скупови података су Дужица и цифре скупови података за класификацију и цене кућа у Бостону скуп података за технике регресије. У овом одељку ћемо погледати како се учитава и започиње коришћење скупа података ириса.
Да бисмо увезли скуп података, прво морамо да увеземо исправан модул након чега следи задржавање скупа података:
из скуарн скупова података за увозирис = скупови података.лоад_ирис ()
цифре = скупови података.лоад_дигитс ()
цифре.подаци
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
Сав излаз је уклоњен ради краткоће. Ово је скуп података који ћемо углавном користити у овој лекцији, али већина концепата може се применити на генерално све скупове података.
Забавна чињеница је знати да у .су присутни вишеструки модули сцикит екосистем, од којих је један научити користи се за алгоритме машинског учења. Погледајте ову страницу за многе друге присутне модуле.
Истраживање скупа података
Сад кад смо у скрипту увезли понуђени скуп података о цифрама, требали бисмо почети сакупљати основне информације о скупу података и то ћемо овдје учинити. Ево основних ствари које бисте требали истражити док тражите информације о скупу података:
- Циљне вредности или ознаке
- Атрибут описа
- Кључеви доступни у датом скупу података
Напишимо кратки исјечак кода да извучемо горе наведене три информације из нашег скупа података:
принт ('Циљ:', цифре.мета)принт ('Тастери:', цифре.тастери ())
принт ('Опис:', цифре.ДЕСЦР)
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
Имајте на уму да променљиве цифре нису једноставне. Када смо одштампали скуп података са цифрама, он је заправо садржао нумпи низове. Видећемо како можемо приступити тим низовима. За ово узмите у обзир кључеве доступне у примерку цифара који смо одштампали у последњем исечку кода.
Почећемо са добијањем облика података низа, то су редови и колоне које низ има. За ово прво морамо добити стварне податке, а затим добити њихов облик:
дигитс_сет = цифре.подаципринт (дигитс_сет.облик)
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
То значи да у нашем скупу података имамо 1797 узорака, заједно са 64 карактеристике података (или колонама). Такође, имамо и неке циљне ознаке које ћемо овде визуализовати уз помоћ матплотлиб-а. Ево исечка кода који нам помаже у томе:
импорт матплотлиб.пиплот као плт# Спојите слике и циљне налепнице као листу
имагес_анд_лабелс = лист (зип (цифре.слике, цифре.мета))
за индекс, (слика, налепница) у енумерате (имагес_анд_лабелс [: 8]):
# иницијализујте подплоту од 2Кс4 на и + 1-ој позицији
плт.подзаплет (2, 4, индекс + 1)
# Нема потребе за уцртавањем било које осе
плт.оса ('искључено')
# Прикажи слике у свим подплотама
плт.имсхов (слика, цмап = плт.центиметар.греи_р, интерполација = 'најближе')
# Додајте наслов у сваку парцелу
плт.наслов ('Обука:' + стр (ознака))
плт.Прикажи()
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
Имајте на уму како смо зиповали две НумПи низове пре него што смо их уцртали у мрежу 4 са 2 без икаквих информација о оси. Сада смо сигурни у информације које имамо о скупу података са којима радимо.
Сада када знамо да имамо 64 карактеристике података (што је иначе пуно карактеристика), изазов је визуализирати стварне податке. Ипак имамо решење за ово.
Анализа главне компоненте (ПЦА)
Ово није упутство о ПЦА, али дајмо малу идеју о томе шта је то. Као што знамо да за смањење броја функција из скупа података имамо две технике:
- Елиминација карактеристика
- Издвајање својстава
Иако се прва техника суочава са проблемом изгубљених карактеристика података чак и када су могле бити важне, друга техника не пати од проблема као уз помоћ ПЦА, ми конструишемо нове карактеристике података (мање у броју) где комбинујемо улазне променљиве на такав начин да можемо изоставити „најмање важне“ променљиве, а да притом задржимо највредније делове свих променљивих.
Као што се и очекивало, ПЦА нам помаже да смањимо високо-димензионалност података што је директан резултат описивања објекта помоћу многих особина података. Не само цифре, већ и многи други практични скупови података имају велик број карактеристика, што укључује податке о финансијским институцијама, податке о времену и економији за регион итд. Када изводимо ПЦА на скупу података са цифрама, наш циљ ће бити пронаћи само две карактеристике које имају већину карактеристика скупа података.
Напишимо једноставан исечак кода за примену ПЦА на низ цифара како бисмо добили наш линеарни модел од само две карактеристике:
од склеарн.разлагање увоз ПЦАфеатуре_пца = ПЦА (н_компоненте = 2)
смањен_дата_рандом = особина_пца.фит_трансформ (цифре.подаци)
модел_пца = ПЦА (н_компоненте = 2)
смањена_података_пца = модел_пца.фит_трансформ (цифре.подаци)
смањена_података_пца.облик
испис (смањен_датан_рандом)
испис (смањена_података_пца)
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
[[-1.2594655 21.27488324][7.95762224 -20.76873116]
[6.99192123 -9.95598191]
…
[10.8012644 -6.96019661]
[-4.87210598 12.42397516]
[-0.34441647 6.36562581]]
[[-1.25946526 21.27487934]
[7.95761543 -20.76870705]
[6.99191947 -9.9559785]
…
[10.80128422 -6.96025542]
[-4.87210144 12.42396098]
[-0.3443928 6.36555416]]
У горњем коду напомињемо да су нам потребне само две функције за скуп података.
Сада када имамо добро знање о нашем скупу података, можемо одлучити какве алгоритме машинског учења можемо применити на њега. Познавање скупа података је важно јер на тај начин можемо одлучити које се информације могу из њега извући и помоћу којих алгоритама. Такође нам помаже да тестирамо хипотезу коју утврдимо док предвиђамо будуће вредности.
Примена к-значи кластерисање
Алгоритам к-значи кластерисања један је од најлакших алгоритама кластерисања за учење без надзора. У овом кластерисању имамо неки случајни број кластера и своје тачке података класификујемо у једно од ових кластера. Алгоритам к-значи пронаћи ће најближи кластер за сваку од задатих тачака података и доделити ту тачку података том кластеру.
Једном када је кластер завршен, центар кластера се прерачунава, тачкама података додељују се нови кластери ако дође до промена. Овај поступак се понавља све док се тачке података не престану мењати тамо да би се постигла стабилност.
Једноставно применимо овај алгоритам без било какве претходне обраде података. За ову стратегију исечак кода биће прилично лак:
из склеарн импорт кластерак = 3
к_меанс = кластер.КМеанс (к)
# одговара подацима
к_меанс.уклопити (цифре.подаци)
# резултати штампања
испис (к_меанс.ознаке _ [:: 10])
испис (цифре.циљ [:: 10])
Једном када покренемо горњи исечак кода, видећемо следећи излаз:
У горњем излазу можемо видети да се различити кластери пружају свакој тачки података.
Закључак
У овој лекцији погледали смо изврсну библиотеку за машинско учење, сцикит-леарн. Сазнали смо да постоји много других модула доступних у породици сцикит и применили смо једноставан алгоритам к-значи на понуђени скуп података. Постоји много више алгоритама који се могу применити на скуп података, осим к-значи кластерисања које смо применили у овој лекцији, подстичемо вас да то учините и делите своје резултате.
Молимо поделите повратне информације о лекцији на Твиттеру са @сбмаггарвал и @ЛинукХинт.