Đưa ra danh sách ma trận thưa thớt, cách tốt nhất để tính độ tương tự cosin giữa mỗi cột (hoặc hàng) trong ma trận là gì? Tôi không muốn lặp lại n-chọn-hai lần.Cách nhanh nhất trong Python để tính toán độ tương tự cosin cho dữ liệu ma trận thưa thớt là gì?
Say ma trận đầu vào là:
A=
[0 1 0 0 1
0 0 1 1 1
1 1 0 1 0]
Các đại diện thưa thớt là:
A =
0, 1
0, 4
1, 2
1, 3
1, 4
2, 0
2, 1
2, 3
Trong Python, nó đơn giản để làm việc với các định dạng ma trận đầu vào:
import numpy as np
from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine
A = np.array(
[[0, 1, 0, 0, 1],
[0, 0, 1, 1, 1],
[1, 1, 0, 1, 0]])
dist_out = 1-pairwise_distances(A, metric="cosine")
dist_out
Cung cấp:
array([[ 1. , 0.40824829, 0.40824829],
[ 0.40824829, 1. , 0.33333333],
[ 0.40824829, 0.33333333, 1. ]])
Đó là tốt cho đầu vào đầy đủ ma trận, nhưng tôi thực sự muốn bắt đầu với biểu diễn thưa thớt (do kích thước và độ lệch của ma trận của tôi). Bất kỳ ý tưởng về cách này tốt nhất có thể được thực hiện? Cảm ơn trước.
không nên dòng đầu tiên của thưa thớt Một được '0, 1'? – seth
Mức độ lớn A, thông thường? – seth
Seth vâng, tôi đã chỉnh sửa bằng chỉnh sửa của bạn. Cảm ơn. Kích thước hiện tại trong hàng chục nghìn mục khác 0, nhưng tôi muốn xử lý 2-3 đơn đặt hàng lớn hơn. – zbinsd