Tôi đang cố gắng thực hiện một cách để nhóm các điểm trong một tập dữ liệu thử nghiệm dựa trên sự tương đồng của chúng với tập dữ liệu mẫu, sử dụng khoảng cách Euclide. Bộ dữ liệu thử nghiệm có 500 điểm, mỗi điểm là một vectơ N chiều (N = 1024). Bộ dữ liệu đào tạo có khoảng 10000 điểm và mỗi điểm cũng là một vectơ 1024 mờ. Mục đích là để tìm khoảng cách L2 giữa mỗi điểm kiểm tra và tất cả các điểm mẫu để tìm mẫu gần nhất (không sử dụng bất kỳ hàm khoảng cách python nào). Kể từ khi mảng thử nghiệm và mảng đào tạo có kích cỡ khác nhau, tôi đã cố gắng sử dụng phát sóng:Chuẩn L2 hiệu quả của bộ nhớ bằng cách phát sóng Python
import numpy as np
dist = np.sqrt(np.sum((test[:,np.newaxis] - train)**2, axis=2))
nơi thử nghiệm là một loạt các hình dạng (500,1024) và đào tạo là một mảng của hình dạng (10000,1024). Tôi nhận được một MemoryError. Tuy nhiên, cùng một mã hoạt động cho các mảng nhỏ hơn. Ví dụ:
test= np.array([[1,2],[3,4]])
train=np.array([[1,0],[0,1],[1,1]])
Có cách nào hiệu quả hơn để thực hiện tính toán trên mà không có vòng lặp? Dựa trên các bài đăng trực tuyến, chúng ta có thể thực hiện L2-norm bằng cách sử dụng phép nhân nhân sqrt (X * X-2 * X * Y + Y * Y). Vì vậy, tôi thử như sau:
x2 = np.dot(test, test.T)
y2 = np.dot(train,train.T)
xy = 2* np.dot(test,train.T)
dist = np.sqrt(x2 - xy + y2)
Kể từ khi các ma trận có hình dạng khác nhau, khi tôi đã cố gắng để phát sóng, có một không phù hợp kích thước và tôi không chắc chắn đúng cách để phát sóng là những gì (không có nhiều kinh nghiệm với Python phát thanh truyền hình). Tôi muốn biết cách nào đúng để thực hiện tính toán khoảng cách L2 như một phép nhân ma trận trong Python, nơi mà các ma trận có hình dạng khác nhau. Ma trận khoảng cách kết quả nên có khoảng cách [i, j] = Euclide giữa điểm kiểm tra i và điểm mẫu j.
nhờ
Vì vậy, bạn đang tìm kiếm tổng cộng 5E6 khoảng cách cho vectơ có độ dài 1024? Hình dạng cuối cùng của bạn sẽ là (500, 10000) hoặc (10000, 500)? – wwii
Nó sẽ là (500, 10000). Các điểm kiểm tra là các hàng, các điểm lấy mẫu là các cột của ma trận khoảng cách. – user1462351