Вменять только для указанных значений c - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть фрейм данных, в котором мне нужно рассчитать значение, основанное на других примерах. Столбец числовой и подразумевает отраслевые цифры, 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

. Как сделать вменение для числового столбца, учитывая только существующие значения?

1 Ответ

0 голосов
/ 24 апреля 2020

Технический ответ на этот вопрос на самом деле удивительно прост: просто спросите единственного соседа в вашем knn imputer:

imputer = KNNImputer(n_neighbors=1)

Таким образом, предсказания knn не будут усреднены среди (много) соседей, но на самом деле они будут состоять только из значений, уже существующих в ваших данных.

Обратите внимание, что это ответ на вопрос программирования , который вы фактически задаете; если это действительно правильный подход, основанный на конкретной форме c ваших данных и функций, выходит за рамки ответа (и, возможно, не в топ c для SO).

...