SciPy fazoviy ma’lumotlar


ULASHISH

Fazoviy ma’lumotlar bilan ishlash

Fazoviy ma’lumotlar deganda geometrik fazoda ifodalangan ma’lumotlar tushuniladi.

Masalan, koordinatalar tizimidagi nuqtalar.

Ko‘plab vazifalarda fazoviy ma’lumotlar bilan bog‘liq masalalarga duch kelamiz.

Masalan, nuqta biror chegara ichida joylashgan yoki joylashmaganini aniqlash.

SciPy bizga fazoviy ma’lumotlar bilan ishlash funksiyalariga ega scipy.spatial modulini taqdim etadi.


Triangulyatsiya

Ko‘pburchakni triangulyatsiya qilish — bu ko‘pburchakni bir nechta uchburchakka bo‘lish bo‘lib, ular yordamida ko‘pburchakning yuzini hisoblashimiz mumkin.

Nuqtalar bo‘yicha triangulyatsiya — uchburchaklardan tashkil topgan sirt yaratish demakdir, bunda berilgan barcha nuqtalar sirtdagi biror uchburchakning kamida bitta uchida joylashadi.

Nuqtalar orqali bunday triangulyatsiyalarni hosil qilish usullaridan biri — Delaunay() triangulyatsiyasi.

Misol

Quyidagi nuqtalardan triangulyatsiya yarating:

import numpy as np from scipy.spatial import Delaunay import matplotlib.pyplot as plt points = np.array([   [2, 4],   [3, 4],   [3, 0],   [2, 2],   [4, 1] ]) simplices = Delaunay(points).simplices plt.triplot(points[:, 0], points[:, 1], simplices) plt.scatter(points[:, 0], points[:, 1], color='r') plt.show()

Natija:

O‘zingiz sinab ko‘ring »

Eslatma: simplices xususiyati uchburchak belgilanishining umumlashgan shaklini hosil qiladi.



Qavariq qobiq (Convex Hull)

Qavariq qobiq — berilgan barcha nuqtalarni qamrab oladigan eng kichik ko‘pburchak.

Qavariq qobiq yaratish uchun ConvexHull() metodidan foydalaning.

Misol

Quyidagi nuqtalar uchun qavariq qobiq yarating:

import numpy as np from scipy.spatial import ConvexHull import matplotlib.pyplot as plt points = np.array([   [2, 4],   [3, 4],   [3, 0],   [2, 2],   [4, 1],   [1, 2],   [5, 0],   [3, 1],   [1, 2],   [0, 2] ]) hull = ConvexHull(points) hull_points = hull.simplices plt.scatter(points[:,0], points[:,1]) for simplex in hull_points:   plt.plot(points[simplex,0], points[simplex,1], 'k-') plt.show()

Natija:

O‘zingiz sinab ko‘ring »

KD-daraxtlar (KDTrees)

KDTrees — eng yaqin qo‘shnini qidirish so‘rovlari uchun optimallashtirilgan ma’lumotlar tuzilmasi.

Masalan, nuqtalar to‘plamida KDTrees yordamida qaysi nuqtalar berilgan nuqtaga eng yaqin ekanini samarali aniqlashimiz mumkin.

KDTree() metodi KDTree obyektini qaytaradi.

query() metodi eng yaqin qo‘shnigacha bo‘lgan masofani hamda qo‘shnilarning joylashuvini qaytaradi.

Misol

(1,1) nuqtaga eng yaqin qo‘shnini toping:

from scipy.spatial import KDTree points = [(1, -1), (2, 3), (-2, 3), (2, -3)] kdtree = KDTree(points) res = kdtree.query((1, 1)) print(res)

Natija:

 (2.0, 0)

O‘zingiz sinab ko‘ring »

Masofa matritsasi

Data Science’da ikki nuqta orasidagi turli xil masofalarni topish uchun ko‘plab masofa metrikalari qo‘llaniladi: Evklid masofasi, kosinus masofasi va boshqalar.

Ikki vektor orasidagi masofa nafaqat ular orasidagi to‘g‘ri chiziq uzunligi, balki koordinata boshiga nisbatan ular orasidagi burchak yoki talab qilinadigan birlik qadamlar soni va hokazo bo‘lishi mumkin.

Ko‘plab Machine Learning algoritmlarining ishlash samaradorligi masofa metrikalariga katta darajada bog‘liq. Masalan, "K Nearest Neighbors" yoki "K Means" va boshqalar.

Keling, ba’zi masofa metrikalarini ko‘rib chiqamiz:


Evklid masofasi

Berilgan nuqtalar orasidagi Evklid masofasini toping.

Misol

from scipy.spatial.distance import euclidean p1 = (1, 0) p2 = (10, 2) res = euclidean(p1, p2) print(res)

Natija:

 9.21954445729

O‘zingiz sinab ko‘ring »

Cityblock masofasi (Manhattan masofasi)

Bu harakatning 4 ta yo‘nalishi yordamida hisoblanadigan masofa.

Masalan, faqat yuqoriga, pastga, o‘ngga yoki chapga harakatlana olamiz, diagonal bo‘ylab emas.

Misol

Berilgan nuqtalar orasidagi cityblock masofasini toping:

from scipy.spatial.distance import cityblock p1 = (1, 0) p2 = (10, 2) res = cityblock(p1, p2) print(res)

Natija:

 11

O‘zingiz sinab ko‘ring »

Kosinus masofasi

Bu A va B nuqtalar orasidagi burchak kosinusining qiymati.

Misol

Berilgan nuqtalar orasidagi kosinus masofasini toping:

from scipy.spatial.distance import cosine p1 = (1, 0) p2 = (10, 2) res = cosine(p1, p2) print(res)

Natija:

 0.019419324309079777

O‘zingiz sinab ko‘ring »

Hamming masofasi

Bu mos bitlar bir-biridan farq qiladigan pozitsiyalarning ulushi.

Bu ikkilik ketma-ketliklar uchun masofani o‘lchash usuli.

Misol

Berilgan nuqtalar orasidagi Hamming masofasini toping:

from scipy.spatial.distance import hamming p1 = (True, False, True) p2 = (False, True, True) res = hamming(p1, p2) print(res)

Natija:

 0.666666666667

O‘zingiz sinab ko‘ring »


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!