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
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
版本 1.4 新增:已新增
"polars"
選項。
- 回傳:
- self估算器實例
估算器實例。