開發人員工具#
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.random
或 numpy.random.normal
之類的函數。這種方法可能會導致單元測試中的重複性問題。相反,應使用從傳遞給類別或函數的 random_state
參數建立的 numpy.random.RandomState
物件。然後可以使用下面的函數 check_random_state
來建立隨機數產生器物件。
check_random_state
:從參數random_state
建立np.random.RandomState
物件。如果
random_state
為None
或np.random
,則會傳回隨機初始化的RandomState
物件。如果
random_state
為整數,則使用它來設定新的RandomState
物件的種子。如果
random_state
為RandomState
物件,則會直接傳遞。
例如
>>> 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
:檢查估算器是否在呼叫transform
、predict
或類似方法之前已完成擬合。此協助程式允許在估算器中引發標準化的錯誤訊息。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_mode
:scipy.stats.mode
的擴充,它允許每個項目都有一個實值權重。
有效率的隨機抽樣#
random.sample_without_replacement
:實作有效率的演算法,從大小為n_population
的母體中,不放回地抽樣n_samples
個整數。
稀疏矩陣的有效率常式#
sklearn.utils.sparsefuncs
cython 模組託管了編譯過的擴展,以有效率地處理 scipy.sparse
資料。
sparsefuncs.mean_variance_axis
:計算 CSR 矩陣指定軸的平均值和變異數。用於正規化KMeans
中的容忍度停止準則。sparsefuncs_fast.inplace_csr_row_normalize_l1
和sparsefuncs_fast.inplace_csr_row_normalize_l2
:可用於將個別稀疏樣本正規化為單位 L1 或 L2 範數,如Normalizer
中所做的一樣。sparsefuncs.inplace_csr_column_scale
:可用於將 CSR 矩陣的列乘以常數比例(每列一個比例)。用於將特徵縮放到StandardScaler
中的單位標準差。sort_graph_by_row_values
:可用於對 CSR 稀疏矩陣進行排序,使每一行都以遞增的值儲存。當在依賴最近鄰圖的估算器中使用預先計算的稀疏距離矩陣時,這有助於提高效率。
圖形常式#
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 中所有函數的清單,以測試一致的行為和介面。
多類別和多標籤實用函數#
multiclass.is_multilabel
:輔助函數,用於檢查任務是否為多標籤分類任務。multiclass.unique_labels
:輔助函數,用於從不同格式的目標中提取唯一的標籤排序陣列。
輔助函數#
gen_even_slices
:產生器,用於建立最多n
的n
個切片組。用於dict_learning
和k_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
中。