Dữ liệu không gian SciPy
Làm việc với dữ liệu không gian
Dữ liệu không gian đề cập đến dữ liệu được biểu diễn trong một không gian hình học.
Ví dụ: điểm trên hệ tọa độ.
Chúng tôi giải quyết các vấn đề về dữ liệu không gian trong nhiều nhiệm vụ.
Ví dụ: tìm xem một điểm có nằm trong ranh giới hay không.
SciPy cung cấp cho chúng ta mô-đun scipy.spatial
, có chức năng làm việc với dữ liệu không gian.
Tam giác
Phép tính tam giác của đa giác là chia đa giác thành nhiều hình tam giác để chúng ta có thể tính diện tích của đa giác.
Tam giác có các điểm có nghĩa là tạo ra các tam giác có bề mặt trong đó tất cả các điểm đã cho nằm trên ít nhất một đỉnh của bất kỳ tam giác nào trên bề mặt.
Một phương pháp để tạo ra các tam giác này thông qua các điểm là Tam giác Delaunay()
.
Ví dụ
Tạo một tam giác từ các điểm sau:
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()
Kết quả:
Hãy tự mình thử » Lưu ý: Thuộc tính simplices
tạo ra sự khái quát hóa ký hiệu tam giác.
Thân lồi
Bao lồi là đa giác nhỏ nhất bao phủ tất cả các điểm đã cho.
Sử dụng phương thức ConvexHull()
để tạo Vỏ lồi.
Ví dụ
Tạo bao lồi cho các điểm sau:
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()
Kết quả:
Hãy tự mình thử »KDTtree
KDTrees là cơ sở hạ tầng được tối ưu hóa cho các truy vấn lân cận gần nhất.
Ví dụ: trong một tập hợp các điểm sử dụng KDTrees, chúng ta có thể hỏi một cách hiệu quả những điểm nào gần nhất với một điểm nhất định.
Phương thức KDTree()
trả về một đối tượng KDTree.
Phương thức query()
trả về khoảng cách đến hàng xóm gần nhất và vị trí của hàng xóm đó.
Ví dụ
Tìm hàng xóm gần nhất tới điểm (1,1):
from scipy.spatial import KDTree
points = [(1, -1), (2, 3), (-2, 3), (2, -3)]
kdtree = KDTree(points)
res = kdtree.query((1, 1))
print(res)
Kết quả:
(2.0, 0)Hãy tự mình thử »
Ma trận khoảng cách
Có nhiều thước đo khoảng cách được sử dụng để tìm các loại khoảng cách khác nhau giữa hai điểm trong khoa học dữ liệu, khoảng cách Euclide, khoảng cách cosin, v.v.
Khoảng cách giữa hai vectơ không chỉ có thể là độ dài của đường thẳng giữa chúng, mà còn có thể là góc giữa chúng tính từ gốc tọa độ hoặc số bước đơn vị cần thiết, v.v.
Nhiều hiệu suất của thuật toán Machine Learning phụ thuộc rất nhiều vào số liệu khoảng cách. Ví dụ: "K Hàng xóm gần nhất" hoặc "K Nghĩa", v.v.
Chúng ta hãy xem xét một số thước đo khoảng cách:
Khoảng cách Euclide
Tìm khoảng cách Euclide giữa các điểm đã cho.
Ví dụ
from scipy.spatial.distance import euclidean
p1 = (1, 0)
p2 = (10, 2)
res = euclidean(p1, p2)
print(res)
Kết quả:
9.21954445729Hãy tự mình thử »
Khoảng cách Cityblock (Khoảng cách Manhattan)
Là khoảng cách được tính bằng cách sử dụng 4 độ chuyển động.
Ví dụ: chúng ta chỉ có thể di chuyển: lên, xuống, sang phải, sang trái chứ không thể di chuyển theo đường chéo.
Ví dụ
Tìm khoảng cách thành phố giữa các điểm đã cho:
from scipy.spatial.distance import cityblock
p1 = (1, 0)
p2 = (10, 2)
res = cityblock(p1, p2)
print(res)
Kết quả:
11Hãy tự mình thử »
Khoảng cách cosine
Là giá trị góc cosin giữa hai điểm A và B.
Ví dụ
Tìm khoảng cách cosine giữa các điểm đã cho:
from scipy.spatial.distance import cosine
p1 = (1, 0)
p2 = (10, 2)
res = cosine(p1, p2)
print(res)
Kết quả:
0,019419324309079777Hãy tự mình thử »
Khoảng cách hamming
Là tỷ lệ các bit trong đó hai bit khác nhau.
Đó là một cách để đo khoảng cách cho chuỗi nhị phân.
Ví dụ
Tìm khoảng cách hamming giữa các điểm đã cho:
from scipy.spatial.distance import hamming
p1 = (True, False, True)
p2 = (False, True, True)
res = hamming(p1, p2)
print(res)
Kết quả:
0.666666666667Hãy tự mình thử »