SciPy fazoviy ma’lumotlar
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:
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:
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.21954445729O‘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:
11O‘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.019419324309079777O‘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.666666666667O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
