使用 Scikit-Learn 在 Python 中查詢歐氏距離
在本文中,我們將學習如何使用 Python 中的 Scikit-Learn 庫查詢歐氏距離。
使用的方法
使用 Scikit-Learn 計算歐氏距離
計算兩個陣列之間的歐氏距離
對於 Python 中的機器學習,Scikit-Learn 是最有效和有用的庫。它包含許多工具,包括迴歸、分類、聚類和其他有用的機器學習方法。歐氏距離是聚類演算法用來確定叢集最佳化程度(即叢集最佳化程度)的指標之一。
我們所有人都使用過著名的二維距離公式來確定幾何中兩點之間的距離 -
歐氏距離公式 -
其中,(x1, x2) 和 (x2, y2) 是笛卡爾平面上的點。
方法 1:使用 Scikit-Learn 計算歐氏距離
計算 NumPy 陣列元素與原點的歐氏距離
演算法(步驟)
以下是執行所需任務應遵循的演算法/步驟。-
使用 import 關鍵字從 sklearn 模組匯入euclidean_distances() 函式。
使用 import 關鍵字匯入 NumPy 模組並使用別名 np。
使用numpy.array() 函式建立一個 NumPy 陣列,併為其提供隨機陣列元素。
使用 euclidean_distances() 函式透過將輸入陣列和原點列表作為引數傳遞給它來計算給定 NumPy 陣列元素(座標)與原點 (0,0,0) 之間的歐氏距離。
列印結果歐氏距離。
示例
以下程式使用 sklearn 模組的 euclidean_distances() 函式返回陣列元素與原點之間的歐氏距離 -
# importing euclidean_distances function from scikit-learn module from sklearn.metrics.pairwise import euclidean_distances # importing NumPy module with an alias name import numpy as np # input NumPy array inputArray = np.array([[3.5, 1.5, 5], [1, 4, 2], [6, 3, 10]]) #calculating the euclidean distance between the given NumPy Array and Origin(0,0) resultDistance = euclidean_distances(inputArray, [[0, 0, 0]]) # printing the resultant euclidean distance print("Resultant euclidean distance:\n", resultDistance)
輸出
執行後,上述程式將生成以下輸出 -
Resultant euclidean distance: [[ 6.28490254] [ 4.58257569] [12.04159458]]
方法 2:計算兩個陣列之間的歐氏距離
兩個陣列元素之間的歐氏距離可以透過相同的方式計算。因此,如果列表分別具有 m 和 n 個元素,則輸出陣列將具有m * n 個元素。
演算法(步驟)
以下是執行所需任務應遵循的演算法/步驟。-
使用 import 關鍵字從 sklearn 模組匯入euclidean_distances 函式。
使用 import 關鍵字匯入numpy 模組並使用別名。
使用numpy.array() 函式建立一個第一個 NumPy 陣列,並建立一個變數來儲存它。
使用numpy.array() 函式建立一個第二個 NumPy 陣列,並建立另一個變數來儲存它。
使用 euclidean_distances() 函式透過將輸入陣列 1 和輸入陣列 2 作為引數傳遞給它來計算給定的兩個輸入陣列元素之間的歐氏距離。
列印結果歐氏距離。
示例
以下程式使用 sklearn 模組的 euclidean_distances() 函式返回兩個對應的輸入陣列元素之間的歐氏距離 -
# importing euclidean_distances function from # scikit-learn module from sklearn.metrics.pairwise import euclidean_distances # importing numpy library with an alias name import numpy as np # input numpy array 1 inputArray_1 = np.array([[3.5, 1.5, 5], [1, 4, 2], [6, 3, 10]]) # input numpy array 2 inputArray_2 = np.array([[5, 4, 2], [4, 3, 1], [8.5, 2, 6]]) # calculating the euclidean distance between inputArray_1 and inputArray_2 resultDistance = euclidean_distances(inputArray_1, inputArray_2) # printing the resultant euclidean distance print("Resultant euclidean distance:\n", resultDistance)
輸出
執行後,上述程式將生成以下輸出 -
Resultant euclidean distance: [[4.18330013 4.30116263 5.12347538] [4. 3.31662479 8.7321246 ] [8.1240384 9.21954446 4.82182538]]
正如我們所看到的,輸出是一個二維陣列。此陣列中的每個專案都包含第一個陣列(標記為“inputArray_1”)中的一個點與第二個陣列(指定為“inputArray_2”)中的其他點集之間的距離。
歐氏距離在聚類演算法中起什麼作用?
一種稱為聚類演算法的無監督機器學習方法根據資料的相似程度將資料集劃分為組(稱為聚類)。歐氏距離通常用於比較資料點的相似性,較近的點被視為更相似。聚類演算法中點之間的距離用於選擇哪些點屬於同一聚類。這可以透過計算每對點之間的歐氏距離並根據閾值選擇應分組在一起的點來實現。或者,聚類演算法可以使用點之間的歐氏距離來計算聚類的質心,即聚類中所有點的平均位置。這可以用來更新聚類中的點位置並提高聚類演算法的準確性。
結論
在本文中,我們學習瞭如何使用 sklearn 模組的 euclidean distances() 函式來計算歐氏距離。我們舉了兩個例子以清晰的方式進行演示,即查詢點到原點的歐氏距離和查詢兩點之間的歐氏距離。