簡體   English   中英

Scikit-learn 具有多個值的輸入

[英]Scikit-learn Imputer with multiple values

有沒有辦法讓 Scikit-learn Imputer 查找並替換被認為是“缺失值”的多個值?

例如,我想做類似的事情

imp = Imputer(missing_values=(7,8,9))

但是根據文檔,missing_values 參數只接受一個 integer:

missing_values:integer 或“NaN”,可選(默認=“NaN”)

缺失值的占位符。 所有出現的 missing_values 都將被估算。 對於編碼為 np.nan 的缺失值,使用字符串值“NaN”。

為什么不在您的原始數據集中手動執行此操作? 假設您使用的是pd.DataFrame ,您可以執行以下操作:

import numpy as np
import pandas as pd
from sklearn.preprocessing import Imputer

df = pd.DataFrame({'A': [1, 2, 3, 8], 'B': [1, 2, 5, 3]})
df_new = df.replace([1, 2], np.nan)
df_imp = Imputer().fit_transform(df_new)

這導致df_imp

array([[ 5.5,  4. ],
   [ 5.5,  4. ],
   [ 3. ,  5. ],
   [ 8. ,  3. ]])

如果你想讓它成為管道的一部分,你只需要實現一個具有類似邏輯的自定義轉換器。

您可以在管道中鏈接多個輸入器,但這可能很快就會變得繁忙,我不確定它的效率如何。

pipeline = make_pipeline(
    SimpleImputer(missing_values=7, strategy='constant', fill_value=10),
    SimpleImputer(missing_values=8, strategy='constant', fill_value=10),
    SimpleImputer(missing_values=9, strategy='constant', fill_value=10)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM