KNNImputer#
- class sklearn.impute.KNNImputer(*, missing_values=nan, n_neighbors=5, weights='uniform', metric='nan_euclidean', copy=True, add_indicator=False, keep_empty_features=False)[原始碼]#
使用 K 近鄰來補全遺失值的插補器。
每個樣本的遺失值,會使用訓練集中找到的
n_neighbors
個最近鄰的平均值來插補。如果兩個樣本在彼此都沒有遺失的特徵上是接近的,則認為這兩個樣本是接近的。請參閱使用者指南中的詳細說明。
在版本 0.22 中新增。
- 參數:
- missing_valuesint、float、str、np.nan 或 None,預設為 np.nan
遺失值的佔位符。所有出現的
missing_values
都會被插補。對於具有可為 Null 的整數 dtype 和遺失值的 pandas 資料框架,應將missing_values
設定為 np.nan,因為pd.NA
會被轉換為 np.nan。- n_neighborsint,預設為 5
用於插補的相鄰樣本數。
- weights{‘uniform’, ‘distance’} 或可呼叫物件,預設為 ‘uniform’
預測中使用的權重函數。可能的值
‘uniform’ : 均勻權重。每個鄰域中的所有點都以相同的權重加權。
‘distance’ : 依據距離的反比來加權點。在這種情況下,查詢點的較近鄰居將比更遠的鄰居具有更大的影響。
callable : 一個使用者定義的函數,它接受一個距離陣列,並返回一個包含權重的相同形狀陣列。
- metric{‘nan_euclidean’} 或 callable,預設值為 ‘nan_euclidean’
用於搜尋鄰居的距離度量。可能的值為
‘nan_euclidean’
callable : 一個符合
func_metric(x, y, *, missing_values=np.nan)
定義的使用者定義函數。x
和y
分別對應於X
和Y
的一個行(即 1 維陣列)。這個 callable 應返回一個純量距離值。
- copybool,預設值為 True
如果為 True,則會建立 X 的副本。如果為 False,則盡可能進行原地填補。
- add_indicatorbool,預設值為 False
如果為 True,則
MissingIndicator
轉換將堆疊在填補器的轉換輸出上。這允許預測估計器在進行填補時考慮缺失值。如果一個特徵在擬合/訓練時沒有缺失值,即使在轉換/測試時有缺失值,該特徵也不會出現在缺失指標上。- keep_empty_featuresbool,預設值為 False
如果為 True,則當呼叫
fit
時,完全由缺失值組成的特徵,在呼叫transform
時會返回結果。填補值始終為0
。在 1.2 版本中新增。
- 屬性:
- indicator_
MissingIndicator
用於為缺失值添加二元指標的指標。如果 add_indicator 為 False,則為
None
。- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有都是字串的特徵名稱時才定義。在 1.0 版本中新增。
- indicator_
參見
SimpleImputer
用於使用簡單策略完成缺失值的單變量填補器。
IterativeImputer
多變量填補器,它從所有其他特徵中估計每個具有缺失值的特徵的填補值。
參考文獻
範例
>>> import numpy as np >>> from sklearn.impute import KNNImputer >>> X = [[1, 2, np.nan], [3, 4, 3], [np.nan, 6, 5], [8, 8, 7]] >>> imputer = KNNImputer(n_neighbors=2) >>> imputer.fit_transform(X) array([[1. , 2. , 4. ], [3. , 4. , 3. ], [5.5, 6. , 5. ], [8. , 8. , 7. ]])
有關更詳細的範例,請參閱 在建構估計器之前填補缺失值。
- fit(X, y=None)[來源]#
在 X 上擬合填補器。
- 參數:
- X類陣列,形狀為 (n_samples, n_features)
輸入資料,其中
n_samples
是樣本數,而n_features
是特徵數。- y忽略
未使用,此處為了 API 一致性而存在。
- 返回:
- self物件
已擬合的
KNNImputer
類別實例。
- 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_newndarray 陣列,形狀為 (n_samples, n_features_new)
轉換後的陣列。
- get_feature_names_out(input_features=None)[來源]#
取得轉換的輸出特徵名稱。
- 參數:
- input_features字串或 None 的類陣列,預設值為 None
輸入特徵。
如果
input_features
為None
,則會使用feature_names_in_
作為輸入特徵名稱。如果未定義feature_names_in_
,則會產生以下輸入特徵名稱:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
為類陣列 (array-like),則如果已定義feature_names_in_
,input_features
必須與feature_names_in_
相符。
- 返回:
- feature_names_outstr 物件的 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"},預設為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
在 1.4 版本中新增:新增了
"polars"
選項。
- 返回:
- self估算器實例
估算器實例。