DictVectorizer#

class sklearn.feature_extraction.DictVectorizer(*, dtype=<class 'numpy.float64'>, separator='=', sparse=True, sort=True)[原始碼]#

將特徵-數值對應的列表轉換為向量。

此轉換器將特徵名稱到特徵值的映射(類似字典的物件)列表轉換為 NumPy 陣列或 SciPy 稀疏矩陣,以供 scikit-learn 估算器使用。

當特徵值為字串時,此轉換器將執行二元單熱(又稱 one-of-K)編碼:針對特徵可能採用的每個可能字串值,建構一個布林值特徵。 例如,一個可以採用 "ham" 和 "spam" 值的特徵 "f" 將在輸出中變成兩個特徵,一個表示 "f=ham",另一個表示 "f=spam"。

如果特徵值是字串的序列或集合,此轉換器將遍歷這些值並計算每個字串值的出現次數。

然而,請注意,只有當特徵值為字串類型時,此轉換器才會執行二元單熱編碼。如果類別特徵表示為數值(例如 int)或字串的可迭代物件,則可以將 DictVectorizer 與 OneHotEncoder 一起使用,以完成二元單熱編碼。

樣本(映射)中未出現的特徵在產生的陣列/矩陣中將具有零值。

有關不同特徵提取器的效率比較,請參閱FeatureHasher 和 DictVectorizer 的比較

請在使用者指南中閱讀更多內容。

參數:
dtypedtype,預設值 = np.float64

特徵值的類型。作為 dtype 參數傳遞給 NumPy 陣列/SciPy 稀疏矩陣建構函式。

separatorstr,預設值 = "="

在為單熱編碼建構新特徵時使用的分隔字串。

sparsebool,預設值 = True

轉換是否應產生 SciPy 稀疏矩陣。

sortbool,預設值 = True

在擬合時,是否應對 feature_names_vocabulary_ 進行排序。

屬性:
vocabulary_dict

將特徵名稱對應到特徵索引的字典。

feature_names_list

一個長度為 n_features 的列表,其中包含特徵名稱(例如,「f=ham」和「f=spam」)。

參見

FeatureHasher

僅使用雜湊函數執行向量化。

sklearn.preprocessing.OrdinalEncoder

處理編碼為任意資料類型列的名義/類別特徵。

範例

>>> from sklearn.feature_extraction import DictVectorizer
>>> v = DictVectorizer(sparse=False)
>>> D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
>>> X = v.fit_transform(D)
>>> X
array([[2., 0., 1.],
       [0., 1., 3.]])
>>> v.inverse_transform(X) == [{'bar': 2.0, 'foo': 1.0},
...                            {'baz': 1.0, 'foo': 3.0}]
True
>>> v.transform({'foo': 4, 'unseen_feature': 3})
array([[0., 0., 4.]])
fit(X, y=None)[原始碼]#

學習特徵名稱 -> 索引對應的列表。

參數:
X映射或可迭代的映射

字典或從特徵名稱(任意 Python 物件)到特徵值(字串或可轉換為 dtype 的物件)的映射。

在 0.24 版本中變更:接受一個類別特徵的多個字串值。

y(已忽略)

已忽略的參數。

回傳:
self物件

DictVectorizer 類別實例。

fit_transform(X, y=None)[原始碼]#

學習特徵名稱 -> 索引對應的列表並轉換 X。

類似於 fit(X) 後接 transform(X),但不要求將 X 具體化到記憶體中。

參數:
X映射或可迭代的映射

字典或從特徵名稱(任意 Python 物件)到特徵值(字串或可轉換為 dtype 的物件)的映射。

在 0.24 版本中變更:接受一個類別特徵的多個字串值。

y(已忽略)

已忽略的參數。

回傳:
Xa{陣列,稀疏矩陣}

特徵向量;永遠是 2 維的。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

參數:
input_features類似陣列的 str 或 None,預設值 = None

不使用,此處為了 API 一致性而存在。

回傳:
feature_names_outstr 物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請檢查使用者指南,了解路由機制的運作方式。

回傳:
routingMetadataRequest

封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值 = True

如果為 True,將傳回此估算器和所含子物件(屬於估算器)的參數。

回傳:
paramsdict

參數名稱對應到其值的字典。

inverse_transform(X, dict_type=<class 'dict'>)[原始碼]#

將陣列或稀疏矩陣 X 轉換回特徵映射。

X 必須是由此 DictVectorizer 的 transform 或 fit_transform 方法產生;它可能只通過保留特徵數量和順序的轉換器。

在 one-hot/one-of-K 編碼的情況下,會傳回建構的特徵名稱和值,而不是原始的名稱和值。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

樣本矩陣。

dict_type類型,預設為 dict

用於特徵映射的建構子。必須符合 collections.Mapping API。

回傳:
D形狀為 (n_samples,) 的 dict_type 物件列表

X 中樣本的特徵映射。

restrict(support, indices=False)[原始碼]#

使用特徵選擇將特徵限制為支援中的特徵。

此函數會就地修改估算器。

參數:
support類陣列

布林遮罩或索引列表(由特徵選擇器的 get_support 成員傳回)。

indicesbool,預設為 False

支援是否為索引列表。

回傳:
self物件

DictVectorizer 類別實例。

範例

>>> from sklearn.feature_extraction import DictVectorizer
>>> from sklearn.feature_selection import SelectKBest, chi2
>>> v = DictVectorizer()
>>> D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
>>> X = v.fit_transform(D)
>>> support = SelectKBest(chi2, k=2).fit(X, [0, 1])
>>> v.get_feature_names_out()
array(['bar', 'baz', 'foo'], ...)
>>> v.restrict(support.get_support())
DictVectorizer()
>>> v.get_feature_names_out()
array(['bar', 'foo'], ...)
set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱導入 set_output API,以了解如何使用 API 的範例。

參數:
transform{"default", "pandas", "polars"},預設為 None

設定 transformfit_transform 的輸出。

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

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

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

回傳:
self估算器實例

估算器實例。

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

設定此估算器的參數。

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

參數:
**paramsdict

估算器參數。

回傳:
self估算器實例

估算器實例。

transform(X)[原始碼]#

將 feature->value 字典轉換為陣列或稀疏矩陣。

在 fit 或 fit_transform 期間未遇到的具名特徵會被靜默忽略。

參數:
X形狀為 (n_samples,) 的映射或映射上的可迭代物件

字典或從特徵名稱(任意 Python 物件)到特徵值(字串或可轉換為 dtype 的物件)的映射。

回傳:
Xa{陣列,稀疏矩陣}

特徵向量;永遠是 2 維的。