【问题标题】:Iterative Imputer giving same output value for all NaNs for a given column迭代 Imputer 为给定列的所有 NaN 提供相同的输出值
【发布时间】:2021-09-14 09:07:19
【问题描述】:

我目前有一个大约 350 列的数据框。我想使用迭代估算器和ExtraTreesRegressor 使用其他几列来估算其中一列中的 NaN。我创建了一个较小的数据框,其中包含感兴趣的特征。我的数据框看起来像:

我想在first_seen_days 中估算 NaN,但是我遇到的问题是所有 NaN 都使用相同的值进行估算。我希望每个 NaN 都被赋予不同的值。这是我的代码:

data_interpolation = df_sample[["first_seen_days","domain_relevant_info_id", 
             "reason_id", "score.1", "status_id"]]

imp = IterativeImputer(random_state = 0)

imp.fit(data_interpolation)
X = data_interpolation

data_interpolation["first_seen_days"] = imp.transform(X)

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    我试过复制你的问题。我能够使用ExtraTreesRegressor。基于此,您的问题可能是因为数据的固有属性。

    import numpy as np
    from sklearn.experimental import enable_iterative_imputer
    from sklearn.impute import IterativeImputer
    from sklearn.ensemble import ExtraTreesRegressor
    
    np.random.seed(0)
    X = np.random.rand(20, 5)
    df = pd.DataFrame(X, columns = ["A", "B", "C", "D", "E"])
    #randomly assign these indexes nan
    for i in [3, 5, 7, 15]:
        df.iloc[i]["A"] = np.nan
    
    ##imputation - part of code from the question
    imp = IterativeImputer(estimator=ExtraTreesRegressor(), random_state = 0)
    imp.fit(df)
    X = df
    df["A"] = imp.transform(X)
    #imputed values
    print(df.iloc[[3, 5, 7, 15]]["A"])
    
    #output
    3     0.706066
    5     0.561352
    7     0.776586
    15    0.550094
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多