仅在特定值之间进行估算

Impute among specific values only

我有一个数据框,我需要在其中根据其他样本估算一个值。该列是数字,表示行业数字 fx(1111 - IT,1234 - 金融,等等)。我尝试应用 KNNImputer,它确实产生了数字,但据我所知,它对其邻居的输出进行平均,从而生成列中不存在的数字。

输入代码如下:

X = df.copy()
imputer = KNNImputer(n_neighbors=5)
filled = imputer.fit_transform(X)

cols = X.columns

df_imputed = pd.DataFrame(data=filled, columns = cols)

它提供的输出是:6405.2 但是,最接近的行业代码是 6399 或 6411

如何仅考虑现有值对数字列进行插补?

技术对此的回答实际上非常简单:只需在您的 knn imputer 中请求一个邻居:

imputer = KNNImputer(n_neighbors=1)

这样,knn 预测将不会在(许多)邻居之间进行平均,但它们实际上只包含数据中已经存在的值。

请注意,这是您实际提出的 编程 问题的答案;如果这实际上是基于您的数据和功能的特定形式的正确方法,则超出了答案的范围(并且可以说是 SO 的题外话)。