Дата Сциенце

Питхон вектори, матрице и низови са НумПи

Питхон вектори, матрице и низови са НумПи
У овој лекцији ћемо погледати неколико добрих савета и трикова за играње са векторима, матрицама и низовима помоћу НумПи библиотеке у Питхону. Ова лекција је врло добра полазна основа ако започињете са Дата Сциенце-ом и треба вам уводни математички преглед ових компонената и како се можемо играти с њима користећи НумПи у коду.

НумПи библиотека омогућава нам извођење различитих операција које је потребно обавити на структурама података које се често користе у машинском учењу и науци података, попут вектора, матрица и низова. Приказаћемо само најчешће операције са НумПи-ом које се користе у великом броју цевовода за машинско учење. На крају, имајте на уму да је НумПи само начин извођења операција, па су математичке операције које приказујемо главни фокус ове лекције, а не сам НумПи пакет. Хајде да почнемо.

Шта је вектор?

Према Гоогле-у, Вецтор је величина која има правац и величину, посебно као одређивање положаја једне тачке у простору у односу на другу.

Вектори су веома важни у машинском учењу, јер не описују само величину већ и смер карактеристика. Можемо створити вектор у НумПи са следећим исечком кода:

увоз нумпи као нп
ров_вецтор = нп.низ ([1,2,3])
испис (вектор_реда)

У горњем исечку кода створили смо вектор реда. Такође можемо створити вектор колоне као:

увоз нумпи као нп
цол_вецтор = нп.низ ([[1], [2], [3]])
принт (цол_вецтор)

Израда матрице

Матрица се једноставно може схватити као дводимензионални низ. Можемо направити матрицу помоћу НумПи-а тако што ћемо направити вишедимензионални низ:

матрица = нп.низ ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
принт (матрица)

Иако је матрица потпуно слична вишедимензионалном низу, не препоручује се матрична структура података из два разлога:

  1. Низ је стандард када је у питању пакет НумПи
  2. Већина операција са НумПи враћа низове, а не матрицу

Коришћење ретке матрице

Да подсетимо, ретка матрица је она у којој је већина ставки нула. Сада је уобичајени сценарио обраде података и машинског учења обрада матрица у којима је већина елемената нула. На пример, размотрите матрицу чији редови описују сваки видео на Иоутубеу, а колоне представљају сваког регистрованог корисника. Свака вредност представља да ли је корисник гледао видео или не. Наравно, већина вредности у овој матрици биће нула. Тхе предност са ретком матрицом је да не чува вредности које су нула. То резултира огромном рачунарском предношћу и оптимизацијом складишта.

Креирајмо овде матрицу варница:

од сципи увоза ретко
оригинал_матрик = нп.низ ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
спарсе_матрик = оскудан.цср_матрик (оригинал_матрик)
испис (спарсе_матрик)

Да бисмо разумели како код функционише, погледаћемо резултате овде:

У горе наведеном коду користили смо функцију НумПи за креирање а Стиснути ретки ред матрица где су елементи који нису нула представљени помоћу индекса заснованих на нули. Постоје разне врсте ретке матрице, попут:

Овде нећемо зарањати у друге ретке матрице, али знамо да је свака њихова употреба специфична и нико не може бити назван „најбољим“.

Примена Операција на све векторске елементе

Чест је сценарио када треба да применимо заједничку операцију на више векторских елемената. То се може урадити дефинисањем ламбда и затим векторизацијом исте. Погледајмо исечак кода за исто:

матрица = нп.низ ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
мул_5 = ламбда к: к * 5
векторизовани_мул_5 = нп.векторизира (мул_5)
вецторизед_мул_5 (матрица)

Да бисмо разумели како код функционише, погледаћемо резултате овде:

У горњем исечку кода користили смо функцију векторизације која је део библиотеке НумПи, како бисмо трансформисали једноставну ламбда дефиницију у функцију која може да обради сваки елемент вектора. Важно је напоменути да је векторизација само петља преко елемената и нема утицаја на извођење програма. НумПи такође омогућава емитовање, што значи да смо уместо горе наведеног сложеног кода могли једноставно:

матрица * 5

А резултат би био потпуно исти. Прво сам желео да прикажем сложени део, иначе бисте прескочили одељак!

Средња вредност, варијанса и стандардна девијација

Помоћу НумПи-а лако је изводити операције повезане са описном статистиком вектора. Средња вредност вектора може се израчунати као:

нп.средња вредност (матрица)

Варијанса вектора може се израчунати као:

нп.вар (матрица)

Стандардна девијација вектора може се израчунати као:

нп.стд (матрица)

Излаз горе наведених наредби на датој матрици дат је овде:

Транспоновање матрице

Транспоновање је врло честа операција за коју ћете чути кад год сте окружени матрицама. Транспозиција је само начин за замену вредности колоне и реда матрице. Имајте на уму да а вектор не може да се транспонује као што је вектор само скуп вредности без да су те вредности категорисане у редове и колоне. Имајте на уму да претварање вектора реда у вектор колоне није транспоновање (на основу дефиниција линеарне алгебре, што је изван делокруга ове лекције).

За сада ћемо мир наћи само транспоновањем матрице. Веома је једноставно приступити транспоновању матрице помоћу НумПи-а:

матрица.Т

Излаз горње наредбе на датој матрици дат је овде:

Иста операција се може извести на вектору реда да би се претворила у вектор колоне.

Изравнавање матрице

Можемо претворити матрицу у једнодимензионални низ ако желимо да њене елементе обрадимо линеарно. То се може учинити помоћу следећег исечка кода:

матрица.поравнати ()

Излаз горње наредбе на датој матрици дат је овде:

Имајте на уму да је изравнана матрица једнодимензионални низ, једноставно линеарног типа.

Израчунавање сопствених вредности и сопствених вектора

Властити вектори се врло често користе у пакетима за машинско учење. Дакле, када је функција линеарне трансформације представљена као матрица, тада су Кс, сопствени вектори вектори који се мењају само у скали вектора, али не и у његовом смеру. Можемо рећи да:

Ксв = γв

Овде је Кс квадратна матрица, а γ садржи сопствене вредности. Такође, в садржи сопствене векторе. Помоћу НумПи-а лако је израчунати сопствене вредности и сопствене векторе. Ево исечка кода где демонстрирамо исто:

процењује, вектори = нп.линалг.еиг (матрица)

Излаз горње наредбе на датој матрици дат је овде:

Тачкасти производи вектора

Дот Продуцтс оф Вецторс је начин множења 2 вектора. Говори вам о колики је вектор у истом смеру, за разлику од унакрсног производа који вам говори супротно, колико су вектори у истом смеру (звани ортогонални). Можемо израчунати тачкасти умножак два вектора како је дато овде у исечку кода:

а = нп.низ ([3, 5, 6])
б = нп.низ ([23, 15, 1])
нп.тачка (а, б)

Излаз горње наредбе на датим низовима дат је овде:

Сабирање, одузимање и множење матрица

Сабирање и одузимање вишеструких матрица прилично је једноставна операција у матрицама. Постоје два начина на која се то може учинити. Погледајмо исечак кода за извођење ових операција. У сврху да ово буде једноставније, користићемо исту матрицу два пута:

нп.додај (матрица, матрица)

Даље, две матрице се могу одузети као:

нп.одузимати (матрица, матрица)

Излаз горње наредбе на датој матрици дат је овде:

Као што се и очекивало, сваки од елемената у матрици се додаје / одузима са одговарајућим елементом. Множење матрице је слично проналажењу тачканог производа као што смо то раније чинили:

нп.тачка (матрица, матрица)

Горњи код ће пронаћи праву вредност множења две матрице, дата као:

матрица * матрица

Излаз горње наредбе на датој матрици дат је овде:

Закључак

У овој лекцији смо прошли кроз пуно математичких операција повезаних са Векторима, Матрицама и Низовима који се често користе Обрада података, дескриптивна статистика и наука о подацима. Ово је била кратка лекција која је покривала само најчешће и најважније одељке широког спектра концепата, али ове операције треба да дају врло добру идеју о томе које све операције могу бити изведене док се баве овим структурама података.

Молимо вас да слободно делите повратне информације о лекцији на Твиттеру са @линукхинт и @сбмаггарвал (то сам ја!).

Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...
Како развити игру на Линуку
Пре деценију, није много корисника Линука предвидело да ће њихов омиљени оперативни систем једног дана бити популарна платформа за играње комерцијални...