我想知道是否有人可以帮助解释我在 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 时我可以做些什么来保持原始形状的任何建议?
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
这可能是因为你的一些 coloms 无处不在NaN,我为你创建了一个小例子,遵循了文档:
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
imp_mean = IterativeImputer(random_state=0)
import numpy as np
imp_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) 形状结束。
添加回答
举报
0/150
提交
取消