我有一个数据框,我需要根据其他样本推算一个值。该列是数字的,意味着行业数字,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。
我如何对数值列进行推算,只考虑现有的数值?
该 技术性 这个问题的答案其实出奇的简单:只要在你的knn imputer中要求一个单一的邻居就可以了。
imputer = KNNImputer(n_neighbors=1)
这样一来,knn的预测就不会在(许多)邻居中被平均, 而是实际上只由你的数据中已经存在的值组成。
请注意,这是对 编程 你实际提出的问题;根据你的数据和特征的具体形式,这是否真的是正确的方法,已经超出了回答的范围(也可以说是SO的题外话)。