Hướng dẫn how do you find the cosine similarity between two vectors in python? - làm thế nào để bạn tìm thấy sự giống nhau cosine giữa hai vectơ trong python?

Tôi không cho rằng hiệu suất rất nhiều ở đây, nhưng tôi không thể cưỡng lại được. Chức năng zip () hoàn toàn phục hồi cả hai vectơ (thực sự nhiều hơn một ma trận) chỉ để lấy dữ liệu theo thứ tự "pythonic". Sẽ rất thú vị khi thời gian thực hiện các loại hạt và bu-lông:

Show
import math
def cosine_similarity(v1,v2):
    "compute cosine similarity of v1 to v2: (v1 dot v2)/{||v1||*||v2||)"
    sumxx, sumxy, sumyy = 0, 0, 0
    for i in range(len(v1)):
        x = v1[i]; y = v2[i]
        sumxx += x*x
        sumyy += y*y
        sumxy += x*y
    return sumxy/math.sqrt(sumxx*sumyy)

v1,v2 = [3, 45, 7, 2], [2, 54, 13, 15]
print(v1, v2, cosine_similarity(v1,v2))

Output: [3, 45, 7, 2] [2, 54, 13, 15] 0.972284251712

Điều đó vượt qua nhiễu giống như C của việc trích xuất các phần tử một lần, nhưng không sao chép mảng số lượng lớn và làm cho mọi thứ quan trọng được thực hiện trong một vòng cho vòng lặp và sử dụng một căn bậc hai.

ETA: Cập nhật cuộc gọi in để trở thành một chức năng. .

CPYThon 2.7.3 trên bộ đôi lõi 2 3.0GHz:

>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264

Vì vậy, cách không có tính cách nhanh hơn khoảng 3,6 lần trong trường hợp này.

  1. Làm thế nào để
  2. Python làm thế nào
  3. Sự tương đồng về cosine trong Python

Được tạo ra: Tháng 6-13, 2021 | Cập nhật: tháng 11-26, 2021

  1. Sử dụng mô -đun
    >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
    2.4261788514654654
    >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
    8.794677709375264
    
    3 để tính toán độ tương tự cosin giữa hai danh sách trong Python
  2. Sử dụng mô -đun
    >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
    2.4261788514654654
    >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
    8.794677709375264
    
    4 để tính toán độ tương tự cosine giữa hai danh sách trong Python
  3. Sử dụng mô -đun
    >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
    2.4261788514654654
    >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
    8.794677709375264
    
    5 để tính toán độ tương tự cosine giữa hai danh sách trong Python
  4. Sử dụng mô -đun
    >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
    2.4261788514654654
    >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
    8.794677709375264
    
    6 để tính toán độ tương tự cosin giữa hai danh sách trong Python

Khi chúng ta xử lý các tencors n-chiều có hình dạng (M, N), chúng ta có thể sử dụng hàm

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
7 từ mô-đun
>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264
6 để tìm sự tương đồng cosine.

Danh sách được chuyển đổi thành tenxơ bằng mô -đun

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
9.

Sử dụng mô -đun >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2") 2.4261788514654654 >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2") 8.794677709375264 3 để tính toán độ tương tự cosin giữa hai danh sách trong Python

Độ tương tự cosine đo lường sự giống nhau giữa các danh sách vectơ bằng cách tính góc cosin giữa hai danh sách vectơ. Nếu bạn xem xét hàm cosin, giá trị của nó ở 0 độ là 1 và -1 ở 180 độ. Điều này có nghĩa là đối với hai vectơ chồng chéo, giá trị của cosin sẽ tối đa và tối thiểu cho hai vectơ đối diện chính xác.

Ví dụ,

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)

Output:

0.9720951480078084

Sử dụng mô -đun >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2") 2.4261788514654654 >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2") 8.794677709375264 4 để tính toán độ tương tự cosine giữa hai danh sách trong Python

Hàm

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
1 tính toán sản phẩm chấm của hai vectơ được truyền dưới dạng tham số. Hàm
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
2 trả về định mức vectơ.

Chúng ta có thể sử dụng các chức năng này với công thức chính xác để tính toán độ tương tự cosin.

Ví dụ,

from numpy import dot
from numpy.linalg import norm
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = dot(List1, List2)/(norm(List1)*norm(List2))
print(result)

Output:

0.9720951480078084

Nếu có nhiều hoặc một danh sách các vectơ và vectơ truy vấn để tính toán độ tương tự cosine, chúng ta có thể sử dụng mã sau.

import numpy as np
List1 =np.array([[ 4, 45,  8,  4],
       [ 2, 23,  6,  4]])

List2=np.array([ 2, 54, 13, 15])

similarity_scores = List1.dot(List2)/ (np.linalg.norm(List1, axis=1) * np.linalg.norm(List2))

print(similarity_scores)

Output:

[0.98143311 0.99398975]

Sử dụng mô -đun >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2") 2.4261788514654654 >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2") 8.794677709375264 5 để tính toán độ tương tự cosine giữa hai danh sách trong Python

Trong mô-đun

>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264
5, có một hàm được xây dựng gọi là
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
5 để tính toán độ tương tự cosin.

Xem mã bên dưới.

from sklearn.metrics.pairwise import cosine_similarity,cosine_distances
A=np.array([10,3])
B=np.array([8,7])
result=cosine_similarity(A.reshape(1,-1),B.reshape(1,-1))
print(result)

Output:

[[0.91005765]]

Sử dụng mô -đun >>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2") 2.4261788514654654 >>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2") 8.794677709375264 6 để tính toán độ tương tự cosin giữa hai danh sách trong Python

Khi chúng ta xử lý các tencors n-chiều có hình dạng (M, N), chúng ta có thể sử dụng hàm

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
7 từ mô-đun
>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264
6 để tìm sự tương đồng cosine.

Ví dụ,

>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264
0

Output:

>>> timeit.timeit("cosine_similarity(v1,v2)",setup="from __main__ import cosine_similarity, v1, v2")
2.4261788514654654
>>> timeit.timeit("cosine_measure(v1,v2)",setup="from __main__ import cosine_measure, v1, v2")
8.794677709375264
1

Danh sách được chuyển đổi thành tenxơ bằng mô -đun

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
9.

Bài viết liên quan - Toán Python

  • Tính toán giai thừa trong Python
  • Tính nghịch đảo của cosin trong Python
  • Tính toán nghịch đảo nhân modular trong Python
  • Xác định giá trị vô hạn trong Python
  • Hướng dẫn how do you find the cosine similarity between two vectors in python? - làm thế nào để bạn tìm thấy sự giống nhau cosine giữa hai vectơ trong python?

    Làm thế nào để bạn tìm thấy sự tương đồng cosine của hai vectơ?

    Công thức tính toán tương tự cosin là: cos (x, y) = x ...
    Độ tương tự cosin giữa hai vectơ được đo trong '' '..
    Nếu θ = 0 °, các vectơ 'x' và 'y' chồng chéo, do đó chứng minh chúng giống nhau ..
    Nếu θ = 90 °, các vectơ 'x' và 'y' không giống nhau ..

    Làm thế nào để bạn tìm thấy khoảng cách cosin giữa hai vectơ trong Python?

    Làm thế nào để bạn tìm thấy sự tương đồng cosine giữa hai vectơ trong Python ?..
    vector1 = [1, 2, 3].
    vector2 = [3, 2, 1].
    cosine_similarity = 1 - không gian.khoảng cách.Cosine (Vector1, Vector2).

    Làm cách nào để nhập Cosineilsimilarity trong Python?

    Cosine_similarity = 1- (sản phẩm chấm của các vectơ/(sản phẩm định mức của các vectơ)).Chúng ta có thể xác định hai chức năng cho mỗi tính toán của sản phẩm chấm và định mức ...
    Khoảng cách cosine ..
    Sự tương đồng về cosine ..
    Khoảng cách góc ..
    Sự tương đồng góc cạnh ..

    Làm thế nào để bạn tìm thấy sự tương đồng cosine trong pyspark?

    Tính định mức L2: Từ pyspark.mllib.feature Nhập nhãn bình thường hóa = RDD.Bản đồ (Lambda l: l [0]) Các tính năng = tfidf nalmalizer = nailcorizer () data = nhãn.ZIP (Bình thường.Transform (tính năng)).
    Tính độ tương tự cosine bằng cách nhân ma trận với chính nó: từ pyspark.Mllib.Linalg ..