仅在值范围内运算

问题描述 投票:0回答:1

我有一个数据框,需要在其中基于其他样本来估算一个值。该列为数字,表示行业编号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

所以问题是:如何仅考虑现有值而对数字列进行插补?

pandas scikit-learn sklearn-pandas data-processing imputation
1个回答
0
投票

答案实际上非常简单:只需在knn中请求一个邻居:

imputer = KNNImputer(n_neighbors=1)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.