我有一个数据框,在这里我需要根据其他样本估算一个值。该列为数字,表示行业编号fx(1111-IT,1234-Finance,依此类推)。我尝试应用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推动者中要求一个邻居即可:
这样,将不会在(许多)邻居之间对knn预测进行平均,但是实际上它们将仅由数据中已经存在的值组成。
注意,这是您实际询问的编程问题的答案。如果这实际上是基于数据和功能的特定形式的正确方法,则超出了答案的范围(对于SO来说可能是偏离主题的)。