sklearn 的 imputer 减少列?

我想知道是否有人可以帮助解释我在 sklearn 的 interativeImputer 中看到的奇怪行为。


imputer = IterativeImputer(max_iter=100)

print("dateframe shape ", dataframe.shape)

tempDF = imputer.fit_transform(dataframe)

print("imputer shape: ", tempDF.shape)

我假设形状会保持不变,但结果是:


dateframe shape  (1978, 100)

imputer shape:  (1978, 91)

我在将 numpy 数组 sklearn 返回转换回 pandas df 时发现了这个错误


tempDF = pd.DataFrame(tempDF, index=dataframe.index, columns=dataframe.columns)

关于使用 imputer 时我可以做些什么来保持原始形状的任何建议?


慕田峪4524236
浏览 64回答 1
1回答

呼如林

这可能是因为你的一些 coloms 无处不在NaN,我为你创建了一个小例子,遵循了文档:from sklearn.experimental import enable_iterative_imputerfrom sklearn.impute import IterativeImputerimp_mean = IterativeImputer(random_state=0)import numpy as npimp_mean.fit([[7, 2, np.nan], [4, np.nan, np.nan], [10, 5, np.nan]])X = [[7, 2, np.nan], [4, np.nan, np.nan], [10, 5, np.nan]]imp_mean.transform(X)array([[ 7.      ,  2.      ],       [ 4.      , -0.999998],       [10.      ,  5.      ]])所以如果一切都是NanIterativeImputer 不知道如何适应和转换它。文档中的原始示例以 (3,3) 形状结束。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python