開發人員工具#

Scikit-learn 包含許多工具以協助開發。這些工具位於 sklearn.utils 中,並包含許多類別的工具。以下所有函數和類別都在 sklearn.utils 模組中。

警告

這些工具旨在 scikit-learn 套件內部使用。它們不保證在 scikit-learn 版本之間穩定。特別是,隨著 scikit-learn 相依性的演變,將會移除回溯移植(Backports)。

驗證工具#

這些工具用於檢查和驗證輸入。當您編寫接受陣列、矩陣或稀疏矩陣作為參數的函數時,應在適用時使用以下工具。

  • assert_all_finite:如果陣列包含 NaN 或 Inf,則拋出錯誤。

  • as_float_array:將輸入轉換為浮點數陣列。如果傳遞稀疏矩陣,則會傳回稀疏矩陣。

  • check_array:檢查輸入是否為 2D 陣列,如果輸入為稀疏矩陣則引發錯誤。可以選擇性地給定允許的稀疏矩陣格式,以及允許 1D 或 N 維陣列。預設會呼叫 assert_all_finite

  • check_X_y:檢查 X 和 y 是否具有一致的長度,在 X 上呼叫 check_array,在 y 上呼叫 column_or_1d。對於多標籤分類或多目標迴歸,請指定 multi_output=True,在這種情況下,將在 y 上呼叫 check_array。

  • indexable:檢查所有輸入陣列是否具有一致的長度,並且可以使用 safe_index 進行切片或索引。這用於驗證交叉驗證的輸入。

  • validation.check_memory 檢查輸入是否類似於 joblib.Memory,這表示它可以轉換為 sklearn.utils.Memory 實例(通常是表示 cachedir 的 str)或具有相同的介面。

如果您的程式碼依賴於隨機數產生器,則絕對不應使用像 numpy.random.randomnumpy.random.normal 之類的函數。這種方法可能會導致單元測試中的重複性問題。相反,應使用從傳遞給類別或函數的 random_state 參數建立的 numpy.random.RandomState 物件。然後可以使用下面的函數 check_random_state 來建立隨機數產生器物件。

  • check_random_state:從參數 random_state 建立 np.random.RandomState 物件。

    • 如果 random_stateNonenp.random,則會傳回隨機初始化的 RandomState 物件。

    • 如果 random_state 為整數,則使用它來設定新的 RandomState 物件的種子。

    • 如果 random_stateRandomState 物件,則會直接傳遞。

例如

>>> from sklearn.utils import check_random_state
>>> random_state = 0
>>> random_state = check_random_state(random_state)
>>> random_state.rand(4)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])

當您開發自己的 scikit-learn 相容估算器時,可以使用以下協助程式。

  • validation.check_is_fitted:檢查估算器是否在呼叫 transformpredict 或類似方法之前已完成擬合。此協助程式允許在估算器中引發標準化的錯誤訊息。

  • validation.has_fit_parameter:檢查給定的參數是否在給定估算器的 fit 方法中受到支援。

高效線性代數和陣列運算#

  • extmath.randomized_range_finder:建構一個正交矩陣,其範圍近似於輸入的範圍。這在下面的 extmath.randomized_svd 中使用。

  • extmath.randomized_svd:計算 k 截斷的隨機 SVD。此演算法使用隨機化來加速計算,找出精確的截斷奇異值分解。它在您只想提取少量元件的大型矩陣上特別快。

  • arrayfuncs.cholesky_delete:(在 lars_path 中使用)從 Cholesky 分解中移除項目。

  • arrayfuncs.min_pos:(在 sklearn.linear_model.least_angle 中使用)尋找陣列中正值的最小值。

  • extmath.fast_logdet:有效率地計算矩陣行列式的對數。

  • extmath.density:有效率地計算稀疏向量的密度

  • extmath.safe_sparse_dot:點積,它將正確處理 scipy.sparse 輸入。如果輸入是密集的,則它等效於 numpy.dot

  • extmath.weighted_modescipy.stats.mode 的擴充,它允許每個項目都有一個實值權重。

  • resample:以一致的方式重新取樣陣列或稀疏矩陣。在下面的 shuffle 中使用。

  • shuffle:以一致的方式打亂陣列或稀疏矩陣。用於 k_means 中。

有效率的隨機抽樣#

稀疏矩陣的有效率常式#

sklearn.utils.sparsefuncs cython 模組託管了編譯過的擴展,以有效率地處理 scipy.sparse 資料。

圖形常式#

  • graph.single_source_shortest_path_length:(目前未使用於 scikit-learn 中)返回從單一來源到圖形上所有連線節點的最短路徑。程式碼改編自 networkx。如果再次需要此功能,使用來自 graph_shortest_path 的 Dijkstra 演算法單次迭代會快得多。

測試函數#

  • discovery.all_estimators:返回 scikit-learn 中所有估算器的清單,以測試一致的行為和介面。

  • discovery.all_displays:返回 scikit-learn 中所有顯示(與繪圖 API 相關)的清單,以測試一致的行為和介面。

  • discovery.all_functions:返回 scikit-learn 中所有函數的清單,以測試一致的行為和介面。

多類別和多標籤實用函數#

輔助函數#

  • gen_even_slices:產生器,用於建立最多 nn 個切片組。用於 dict_learningk_means 中。

  • gen_batches:產生器,用於建立從 0 到 n 且包含批次大小元素的切片

  • safe_mask:輔助函數,用於將遮罩轉換為 NumPy 陣列或 scipy 稀疏矩陣預期的格式,以便在其上使用(稀疏矩陣僅支援整數索引,而 NumPy 陣列同時支援布林遮罩和整數索引)。

  • safe_sqr:輔助函數,用於統一平方(**2)類陣列、矩陣和稀疏矩陣。

雜湊函數#

  • murmurhash3_32 為 C++ 非加密雜湊函數 MurmurHash3_x86_32 提供了一個 Python 包裝器。此雜湊函數適用於實作查找表、布隆過濾器、計數最小略圖、特徵雜湊和隱式定義的稀疏隨機投影。

    >>> from sklearn.utils import murmurhash3_32
    >>> murmurhash3_32("some feature", seed=0) == -384616559
    True
    
    >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737
    True
    

    也可以從其他 cython 模組「cimport」sklearn.utils.murmurhash 模組,以從 MurmurHash 的高效能中獲益,同時跳過 Python 解釋器的開銷。

警告和例外#

  • deprecated:用於將函數或類別標記為已棄用的裝飾器。

  • ConvergenceWarning:用於捕捉收斂問題的自訂警告。用於 sklearn.covariance.graphical_lasso 中。