只在特定的数值中执行

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

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

imputer的代码如下。

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。

我如何对数值列进行推算,只考虑现有的数值?

scikit-learn knn imputation
1个回答
0
投票

技术性 这个问题的答案其实出奇的简单:只要在你的knn imputer中要求一个单一的邻居就可以了。

imputer = KNNImputer(n_neighbors=1)

这样一来,knn的预测就不会在(许多)邻居中被平均, 而是实际上只由你的数据中已经存在的值组成。

请注意,这是对 编程 你实际提出的问题;根据你的数据和特征的具体形式,这是否真的是正确的方法,已经超出了回答的范围(也可以说是SO的题外话)。

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