特徵雜湊器 (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 將轉換器擬合到 Xy,並回傳 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

設定 transformfit_transform 的輸出格式。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換配置保持不變

1.4 版本新增:"polars" 選項已新增。

回傳:
self估算器實例

估算器實例。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器,以及巢狀物件(例如 Pipeline)。後者的參數形式為 <元件>__<參數>,因此可以更新巢狀物件的每個元件。

參數:
**paramsdict

估算器參數。

回傳:
self估算器實例

估算器實例。

transform(raw_X)[原始碼]#

將一系列實例轉換為 scipy.sparse 矩陣。

參數:
raw_X可迭代的原始特徵序列,長度 = n_samples

樣本。每個樣本必須是可迭代的(例如,列表或元組),其中包含/產生將被雜湊的特徵名稱(以及可選的值,請參閱 input_type 建構函式引數)。raw_X 不需要支援 len 函式,因此它可以是產生器的結果;n_samples 是動態決定的。

回傳:
X形狀為 (n_samples, n_features) 的稀疏矩陣

特徵矩陣,用於估算器或進一步的轉換器。