特徵雜湊器 (FeatureHasher)#
- class sklearn.feature_extraction.FeatureHasher(n_features=1048576, *, input_type='dict', dtype=<class 'numpy.float64'>, alternate_sign=True)[來源]#
實作特徵雜湊,又稱雜湊技巧。
此類別將符號特徵名稱(字串)的序列轉換為 scipy.sparse 矩陣,使用雜湊函數來計算與名稱對應的矩陣列。採用的雜湊函數是 Murmurhash3 的帶正負號的 32 位元版本。
位元組字串類型的特徵名稱會直接使用。Unicode 字串會先轉換為 UTF-8,但不會進行 Unicode 正規化。特徵值必須是(有限)數字。
此類別是 DictVectorizer 和 CountVectorizer 的低記憶體替代方案,適用於大規模(線上)學習以及記憶體受限的情況,例如在嵌入式裝置上執行預測程式碼時。
如需比較不同特徵提取器的效率,請參閱 特徵雜湊器與 DictVectorizer 的比較。
請參閱 使用者指南以深入了解。
新增於 0.13 版。
- 參數:
- n_featuresint,預設值為 2**20
輸出矩陣中的特徵(欄位)數量。少量的特徵可能導致雜湊碰撞,但大量的特徵會導致線性學習器中較大的係數維度。
- input_typestr,預設值為 ‘dict’
從 {‘dict’, ‘pair’, ‘string’} 中選擇一個字串。可以使用 “dict”(預設)來接受 (feature_name, value) 的字典;“pair” 來接受 (feature_name, value) 的配對;或 “string” 來接受單一字串。feature_name 應該是字串,而 value 應該是數字。在 “string” 的情況下,value 會被預設為 1。feature_name 會被雜湊以找到特徵的適當欄位。value 的符號可能會在輸出中被翻轉(但請參閱下方的 non_negative)。
- dtypenumpy dtype,預設值為 np.float64
特徵值的類型。會以 dtype 參數傳遞給 scipy.sparse 矩陣建構子。請勿將其設定為 bool、np.boolean 或任何無號整數類型。
- alternate_signbool,預設值為 True
當為 True 時,會將交替符號加入特徵中,以便在雜湊空間中近似保留內積,即使在較小的 n_features 的情況下也是如此。這種方法類似於稀疏隨機投影。
在版本 0.19 中變更:
alternate_sign
取代了現在已棄用的non_negative
參數。
另請參閱
DictVectorizer
使用雜湊表向量化字串值特徵。
sklearn.preprocessing.OneHotEncoder
處理名義/類別特徵。
注意事項
此估算器是無狀態的,不需要擬合。但是,我們建議呼叫
fit_transform
而不是transform
,因為參數驗證僅在fit
中執行。範例
>>> from sklearn.feature_extraction import FeatureHasher >>> h = FeatureHasher(n_features=10) >>> D = [{'dog': 1, 'cat':2, 'elephant':4},{'dog': 2, 'run': 5}] >>> f = h.transform(D) >>> f.toarray() array([[ 0., 0., -4., -1., 0., 0., 0., 0., 0., 2.], [ 0., 0., 0., -2., -5., 0., 0., 0., 0., 0.]])
使用
input_type="string"
時,輸入必須是字串迭代器的可迭代物件>>> h = FeatureHasher(n_features=8, input_type="string") >>> raw_X = [["dog", "cat", "snake"], ["snake", "dog"], ["cat", "bird"]] >>> f = h.transform(raw_X) >>> f.toarray() array([[ 0., 0., 0., -1., 0., -1., 0., 1.], [ 0., 0., 0., -1., 0., -1., 0., 0.], [ 0., -1., 0., 0., 0., 0., 0., 1.]])
- fit(X=None, y=None)[原始碼]#
僅驗證估算器的參數。
此方法允許:(i) 驗證估算器的參數,以及 (ii) 與 scikit-learn 轉換器 API 保持一致。
- 參數:
- X忽略
不使用,此處為了 API 的一致性而存在。
- y忽略
不使用,此處為了 API 的一致性而存在。
- 回傳:
- self物件
FeatureHasher 類別實例。
- fit_transform(X, y=None, **fit_params)[原始碼]#
擬合資料,然後轉換它。
使用可選參數
fit_params
將轉換器擬合到X
和y
,並回傳X
的轉換版本。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
輸入樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值為 None
目標值(無監督轉換為 None)。
- **fit_paramsdict
其他擬合參數。
- 回傳:
- X_new形狀為 (n_samples, n_features_new) 的 ndarray 陣列
轉換後的陣列。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用手冊,了解路由機制的運作方式。
- 回傳:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將回傳此估算器和包含的子物件(屬於估算器)的參數。
- 回傳:
- paramsdict
參數名稱對應到其值。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱介紹 set_output API範例,了解如何使用此 API。
- 參數:
- transform{"default", "pandas", "polars"}, default=None
設定
transform
和fit_transform
的輸出格式。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換配置保持不變
1.4 版本新增:
"polars"
選項已新增。
- 回傳:
- self估算器實例
估算器實例。