Daugiau

Euklido atstumas tarp dviejų eilučių

Euklido atstumas tarp dviejų eilučių


„ArcMap 10.2.2“ turiu dvi eilutes ir man buvo įdomu, ar įmanoma sukurti rastrą, rodantį Euklido atstumą tarp jų.

Kaip susieti kiekvieną vienos eilutės langelį su artimiausiu kitos eilutės langeliu?


Galite rastrizuoti linijas („Polyline to Raster“) ir naudoti „Euclidean Distance“ įrankį, kaip siūloma. Jei linijos yra toje pačioje funkcijų klasėje, atkreipkite dėmesį, kad ED ląstelių vertės bus atstumas nuo linija, todėl vertės didės toliau nuo dviejų linijų iki pusės. Jei norite atstumo nuo vienos linijos iki kitos, ED turite paleisti tik vienoje eilutėje (pasirinkite vieną ar kitą prieš „Polyline to Raster“, kad įrankis būtų paleistas tik pasirinktai funkcijai), o tada išskleiskite langelio vertes ten, kur kita kerta rezultato rastrą. Vienas iš būdų tai padaryti būtų rastrizuoti kitą liniją ir naudoti tą rastrą kaip „Extract by Mask“ kaukę.


Euklido erdvė

Euklido erdvė yra pagrindinė klasikinės geometrijos erdvė. Iš pradžių tai buvo trimatė Euklido geometrijos erdvė, tačiau šiuolaikinėje matematikoje yra bet kokio neneigiamo sveiko skaičiaus matmens euklido erdvės [1], įskaitant trimatę erdvę ir Euklido lėktuvas (antras matmuo). Jį pristatė senovės graikų matematikas Euklidas iš Aleksandrijos [2] ir atrankos dalyvis Euklido naudojamas atskirti jį nuo kitų erdvių, kurios vėliau buvo atrastos fizikoje ir šiuolaikinėje matematikoje.

Senovės graikų geometrai fizinei visatai modeliuoti pristatė Euklido erdvę. Didžioji jų naujovė buvo įrodyti visos erdvės savybės kaip teoremos, pradedant nuo kelių pagrindinių savybių, vadinamų postulatai, kurie arba buvo laikomi akivaizdžiais (pavyzdžiui, yra tiksliai viena tiesė, einanti per du taškus), arba atrodė neįmanoma įrodyti (lygiagretus postulatas).

XIX amžiaus pabaigoje įvedus ne Euklido geometriją, senieji postulatai buvo iš naujo formalizuoti, siekiant apibrėžti Euklido erdves pagal aksiomatinę teoriją. Įrodyta, kad kitas Euklido erdvių apibrėžimas naudojant vektorines erdves ir tiesinę algebrą yra lygiavertis aksiomatiniam apibrėžimui. Būtent šis apibrėžimas dažniau naudojamas šiuolaikinėje matematikoje ir išsamiai aprašytas šiame straipsnyje. [3]

Visuose apibrėžimuose Euklido erdvės susideda iš taškų, kuriuos apibrėžia tik savybės, kurias jie turi turėti, kad sudarytų Euklido erdvę.

Iš esmės yra tik viena kiekvienos dimensijos Euklido erdvė, tai yra, visos tam tikros dimensijos Euklido erdvės yra izomorfinės. Todėl daugeliu atvejų galima dirbti su konkrečia Euklido erdve, kuri paprastai yra tikroji n erdvė R n, < displaystyle mathbb ^,> įrengtas taškinis produktas. Izomorfizmas iš Euklido erdvės į R n < displaystyle mathbb ^> susieja su kiekvienu tašku n skaičių daugybės realiųjų skaičių, kurie suranda tą tašką Euklido erdvėje ir yra vadinami Dekarto koordinatės to taško.


Sklearn.metrics.pairwise .euclidean_distances¶

Atsižvelgdami į X (ir Y = X) eilutes kaip vektorius, apskaičiuokite atstumo matricą tarp kiekvienos vektorių poros.

Siekiant efektyvumo, euklidinis atstumas tarp eilutės vektoriaus x ir y yra apskaičiuojamas taip:

Ši formuluotė turi du pranašumus, palyginti su kitais atstumų skaičiavimo būdais. Pirma, ji yra skaičiavimo požiūriu efektyvi tvarkant mažus duomenis. Antra, jei vienas argumentas skiriasi, bet kitas lieka nepakitęs, tada galima iš anksto apskaičiuoti tašką (x, x) ir (arba) tašką (y, y).

Tačiau tai nėra pats tiksliausias šio skaičiavimo būdas, nes ši lygtis gali būti „katastrofiškai atšaukta“. Be to, šios funkcijos grąžinta atstumo matrica gali būti ne visai simetriška, kaip reikalaujama, pvz., „Scipy.spatial.distance“ funkcijose.

Parametrai X formos (n_samples_X, n_features) Y formos (n_samples_Y, n_features), numatytasis = Nėra Y_norm_ kvadratas formos masyvas (n_samples_Y,), numatytasis = Nėra

Iš anksto apskaičiuoti vektorių taškai Y (pvz., (Y ** 2). Suma (ašis = 1)) Kai kuriais atvejais gali būti ignoruojami, žr.

kvadratas bool, numatytasis = klaidinga

Grąžinkite kvadratinius Euklido atstumus.

X_norm_ kvadratas formos masyvas (n_samples,), numatytasis = Nėra

Iš anksto apskaičiuoti vektorių taškai X (pvz., (X ** 2). Suma (ašis = 1)) Kai kuriais atvejais gali būti ignoruojami, žr.

Grįžta atstumus ndarray formos (n_samples_X, n_samples_Y)

Atstumai tarp X ir Y elementų porų.

Siekiant didesnio tikslumo, X_norm_squared ir Y_norm_squared gali būti nenaudojami, jei jie perduodami kaip float32.


Euklido atstumas tarp dviejų eilučių - Geografinės informacijos sistemos

Euklido atstumas n-matmenų erdvėje

Euklido atstumas yra tikrojo tiesės atstumo tarp dviejų Euklido erdvės taškų matas.

Pavyzdyje, kai yra tik 1 kintamasis, apibūdinantis kiekvieną langelį (ar atvejį), yra tik 1 matmenų tarpas. Euklido atstumas tarp 2 langelių būtų paprastas aritmetinis skirtumas: xląstelė1 - xląstelė2 (pvz., APHWląstelė1 = 1,11603 ms ir APHWląstelė10 = 0,97034 ms jie yra (1,11603 - 0,97034) = 0,14569 ms).

Tai čia jau aprašyta.

Naudojant 3 kintamuosius, atstumas gali būti vizualizuojamas 3D erdvėje, tokia kaip matoma žemiau.

Atstumas „e“ būtų atstumas tarp 1 langelio ir 2 amp. Galėtume jį nustatyti naudodamiesi Pitagoro teorema, kaip matyta anksčiau, tačiau pirmiausia turime rasti „d“ reikšmę naudodami reikšmes „a“ ir „b“.

4. c = eEPSCląstelė1 - eEPSCląstelė2

pakeisdami a2 + b2 c2 iš 3 eilutės, gausite

pakeisdami „a“, „b“ ir „c“ reikšmes iš 1, 2 ir 4

7. e 2 = (APHWląstelė1 - APHWląstelė2) 2 + (mTauląstelė1 - mTauląstelė2) 2 + (eEPSCląstelė1 - eEPSCląstelė2) 2

Tokiu būdu visi matmenys (APHW, mTau ir amp eEPSC amplitudė) yra sudedami, kad būtų gautas Euklido atstumas vienoje lygtyje.

Daugiau nei 3 matmenys („n“ matmenys)

Nors beveik neįmanoma įsivaizduoti Pitagoro principo, jis gali būti taikomas daugiau nei trims matmenims.

Apibendrindami tai galėtume pasakyti, kad „e“, matytas aukščiau, yra atstumas „D“ tarp bet kurios 2 ląstelės (i ląstelė ir j ląstelė): Dij.

Matmenų, kuriuose dirbama, skaičius priklauso nuo kintamųjų, kuriuos kiekviena ląstelė (atvejis) apibūdina, skaičiaus. Jei kiekvieną langelį apibūdina 3 kintamieji, tai yra 3D erdvė, jei yra 20 kintamųjų, tai yra 20D erdvė. Todėl „n“ kintamieji vaizduojami „n“ matmenų erdvėje. Kiekviena ląstelė (atvejis) turės reikšmę „x“ kiekvienam kintamajam (kintamieji bus vaizduojami nuo pirmojo „v“ = 1 iki paskutinio „v“ = „n“, kad „v“ = 1 iki „n“ ). Taigi atstumą kiekviename matmenyje (pvz., 1, 2 ir 4 aukščiau) galima pavaizduoti taip:

xvi - xvj kuris angliškai būtų: V -ojo kintamojo reikšmė langeliui i atėmus v -ojo kintamojo reikšmę langeliui j.

Kuris, prisimenant Pitagoro teoremą anglų kalba: hipotenuzės kvadratas lygus kitų dviejų pusių kvadratų sumai. (čia visiškai nerdy Pitagoro pokštas), pats angliškai būtų toks: „Atstumo tarp 2 langelių kvadratas“ (i & amp j Dij) yra lygi kiekvienos dimensijos atstumų kvadratų sumai (S) nuo pirmojo kintamojo (v = 1) iki paskutinio kintamojo (n) (kuri randama suradus kiekvienos ląstelės kiekvienos vertės skirtumus kintamasis (ląstelės i reikšmė v -ajam kintamajam yra xvi ir ląstelės j reikšmė yra xvj)).


Kendallo Tau

Kendallo tau yra gana panašus į Spearmano koreliacijos koeficientą. Abi šios priemonės yra neparametriniai santykio matai. Tiksliau, tiek Spearmano, tiek Kendallo koeficientai apskaičiuojami remiantis reitingo duomenimis, o ne neapdorotais duomenimis.

Panašiai kaip Pearsono ir Spearmano koreliacija, Kendallo Tau visada yra tarp -1 ir +1, kur -1 rodo tvirtą, neigiamą dviejų kintamųjų ryšį, o 1 rodo tvirtą teigiamą dviejų kintamųjų ryšį.

Nors „Spearman“ ir „Kendall“ matai yra labai panašūs, pasirinkus „Kendall“ matą yra statistinių pranašumų, nes „Kendall's Tau“ kintamumas yra mažesnis, kai naudojami didesni imties dydžiai. Tačiau Spearmano matas yra efektyvesnis skaičiavimo požiūriu, nes Kendallo Tau yra O (n²), o Spearmano koreliacija yra O (nLog (n)).


Skirtumo kvadratu suma yra lygi kvadrato (L_2 ) -normai, dar vadinama Euklido norma. Todėl jis taip pat žinomas kaip kvadratas Euklido atstumas. Tai yra pagrindinė mažiausių kvadratų užduočių ir tiesinės algebros metrika. Dėl abs funkcijos nebuvimo šią metriką patogu analizuoti, tačiau dėl kvadratų ji yra labai jautri dideliems nukrypimams.

[d _ < matematika>: (x, y) mapsto | x-y | _2^2 = langle x-y, x-y rangle = sum_^ (x_i-y_i)^2 ]


Tai, ką naudojate, vadinama hasrsine formule, kuri apskaičiuoja atstumą tarp dviejų rutulio taškų kaip varna. Jūsų pateikta „Google“ žemėlapių nuoroda rodo atstumą kaip 2,2 km, nes tai nėra tiesi linija.

„Wolfram Alpha“ yra puikus šaltinis atliekant geografinius skaičiavimus, taip pat rodo 1,652 km atstumą tarp šių dviejų taškų.

Jei ieškote tiesios linijos atstumo (kaip varnos failai), jūsų funkcija veikia tinkamai. Jei norite važiavimo atstumo (arba dviračių atstumo, viešojo transporto atstumo ar pėsčiomis), norėdami gauti tinkamą maršrutą, kuriame bus nurodytas atstumas, turite naudoti žemėlapių API („Google“ arba „Bing“ yra populiariausi).


Galite nubrėžti linijas, sudarančias stačiakampį trikampį, naudodami šiuos taškus kaip du kampus:

Nesunku rasti dešiniojo trikampio horizontalių ir vertikalių kraštinių ilgius: tiesiog atimkite x -vertybės ir y -vertės:

Tada naudokite Pitagoro teoremą, kad surastumėte trečiosios kraštinės ilgį (tai yra dešiniojo trikampio hipotenuzė):

Šis formatas visada teisingas. Turėdami du taškus, visada galite juos nubraižyti, nubrėžti stačiakampį trikampį ir tada rasti hipotenuzės ilgį. Hipotenzijos ilgis yra atstumas tarp dviejų taškų. Kadangi šis formatas visada veikia, jį galima paversti formule:

Atstumo formulė: atsižvelgiant į du taškus (x1, y1) ir (x2, y2) , Atstumas d tarp šių taškų pateikiama pagal formulę:

Neleiskite, kad abonentai jus gąsdintų. Jie tik nurodo, kad yra „pirmasis“ ir „antrasis“ taškas, tai yra, kad turite du taškus. Kurį pavadinsite „pirmuoju“ ar „antruoju“, turite nuspręsti. Atstumas bus tas pats, nepaisant to.


Tarkime, kad atliksite apklausą, kad rastumėte filmų nuostatas:

  1. Kaip tau patiko Rambo? (1–10)
  2. Kaip tau patiko Bambi? (1–10)
  3. Kaip jums patiko Seinfeldas? (1–10)

Kaip galime palyginti žmonių įvertinimus? Rasti panašias nuostatas? Pitagoras į pagalbą!

Jei reitingus pateikiame kaip „tašką“ („Rambo“, „Bambi“, „Seinfeld“), apklausos atsakymus galime pateikti taip:

Naudodamiesi teorema, galime pamatyti, kokie skirtingi yra žmonės:

  • Kietas vaikinas iki vidutinio Joe: $ (10 -5, 1 -5, 3 -5) = (5, -4, -2) = sqrt <(5)^2 + (-4)^2 + (-2 )^2> = sqrt <45> = 6,7 $
  • Kietas vaikinas jautriam vaikinui: $ (10 -1, 1 -10, 3 -7) = (9, -9, -4) = sqrt <(9)^2 + (-9)^2 + (-4 )^2> = sqrt <178> = 13,34 $

Rezultatus galime apskaičiuoti naudodami 2 + b 2 + c 2 = 2 atstumo teoremos versiją. Kaip įtarėme, tarp Kieto ir jautraus vaikino yra didelis atotrūkis, o viduryje - vidutinis Džo. Teorema mums padeda išmatuoti šį atstumą ir daryti tokius įdomius dalykus kaip surinkti panašius rezultatus.

Šią techniką galima naudoti norint įvertinti „Netflix“ filmų nuostatas ir kitas rūšis Bendras filtravimas kur bandote prognozuoti, remdamiesi nuostatomis (t. y. „Amazon“ rekomendacijomis). Kalbėdami geek, mes atstovavome nuostatas kaip vektorių ir naudojome teoremą, norėdami rasti atstumą tarp jų (ir galbūt sugrupuoti panašius elementus).


8. 3 naudojimo atvejis: vienos klasės klasifikacija

Vienos klasės klasifikacija yra algoritmo tipas, kai mokymo duomenų rinkinyje yra stebėjimų, priklausančių tik vienai klasei.

Turint tik tą informaciją, tikslas yra išsiaiškinti, ar tam tikras stebėjimas naujame (ar bandomame) duomenų rinkinyje priklauso tai klasei.

Jums gali kilti klausimas, kada tokia situacija atsiras. Na, tai gana dažna duomenų mokslo problema.

Pavyzdžiui, apsvarstykite tokią situaciją: Turite didelį duomenų rinkinį, kuriame yra milijonai įrašų, kurie dar NĖRA priskiriami 1 ir 0 kategorijoms. Bet jūs taip pat turite su savimi nedidelį duomenų rinkinio pavyzdį, kuriame yra tik teigiami (1) įrašai. Sužinoję šio pavyzdinio duomenų rinkinio informaciją, norite visus didelio duomenų rinkinio įrašus klasifikuoti kaip 1 ir 0.

Remiantis imties duomenų rinkinio informacija, peržiūrint tik 1 (ir visiškai nežinant apie 0), galima pasakyti, ar kuris nors pavyzdys yra 1 ar 0.

Tai galima padaryti naudojant Mahalanobis Distance.

Pabandykime tai padaryti naudojant „BreastCancer“ duomenų rinkinį, tik šį kartą mokymų duomenyse atsižvelgsime tik į piktybinius pastebėjimus (klasės stulpelis = 1).

50% duomenų rinkinio padalijimas į mokymus ir testus. Mokymo duomenyse išsaugomi tik 1.

Sukurkime „MahalanobisOneClassClassifier“ ir gaukite kiekvieno duomenų taško „mahalanobis“ atstumą x iš mokymo rinkinio („xtrain_pos“).

Turime Mahalanobio atstumą ir tikrąją kiekvieno stebėjimo klasę.

Tikiuosi, kad tie stebėjimai, esant mažam Mahalanobio atstumui, bus 1.

Taigi, surūšiuoju mdist_actuals pagal Mahalanobio atstumą ir kvantiliai supjaustau eilutes į 10 vienodo dydžio grupių. Stebėjimai viršutiniuose kvantiliuose turėtų turėti daugiau 1, palyginti su apatiniais. Pažiūrėkime.

Jei pastebėjote aukščiau, beveik 90% 1 (piktybinių atvejų) patenka į pirmuosius 40% Mahalanobis atstumo. Beje, visa tai yra mažesnė už kritinę vertę pf 14.05. Taigi, kritinę vertę laikykime ribine verte ir pažymėkime tuos pastebėjimus, teigdami, kad Mahalanobio atstumas yra mažesnis už ribą.

Taigi, nežinodami gerybinės klasės, mes galime tiksliai numatyti 87% stebėjimų klasę.