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) 定義的使用者定義函數。xy 分別對應於 XY 的一個行(即 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 版本中新增。

參見

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 將轉換器擬合到 Xy,並返回轉換後的 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_featuresNone,則會使用 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

設定 transformfit_transform 的輸出。

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

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

在 1.4 版本中新增:新增了 "polars" 選項。

返回:
self估算器實例

估算器實例。

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

設定此估算器的參數。

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

參數:
**paramsdict

估算器參數。

返回:
self估算器實例

估算器實例。

transform(X)[原始碼]#

填補 X 中的所有遺失值。

參數:
X類陣列,形狀為 (n_samples, n_features)

要完成的輸入資料。

返回:
X形狀為 (n_samples, n_output_features) 的類陣列

已填補的資料集。n_output_features 是在 fit 期間不總是遺失的特徵數量。