Scikit: проблема с возвратом Dataframe из imputer вместо Numpy Array - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь вменить некоторые отсутствующие значения в кадре данных, используя scikit-learn IterativeImputer(). Проблема заключается в том, что импуттер примет в качестве ввода pandas фрейм данных, но вернет массив numpy вместо исходного фрейма данных. Вот простой пример, взятый из этого поста .

# Create an empty dataset
df = pd.DataFrame()

# Create two variables called x0 and x1. Make the first value of x1 a missing value
df['x0'] = [0.3051,0.4949,0.6974,0.3769,0.2231,0.341,0.4436,0.5897,0.6308,0.5]
df['x1'] = [np.nan,0.2654,0.2615,0.5846,0.4615,0.8308,0.4962,0.3269,0.5346,0.6731]

imputer = IterativeImputer(max_iter=10, random_state=42)
imputer.fit(df)
imputed_df = imputer.transform(df)
imputed_df

Проблема в том, что при возвращении массива numpy имена столбцов удаляются и другие метаданные. Конечно, я могу вручную извлечь эти метаданные из исходного фрейма данных, а затем повторно применить их, но это выглядит немного странно. Pandas имеет свой собственный импутер в терминах Dataframe.fillna(), но алгоритмы не такие сложные, как scikit.

Итак, есть ли способ установить импутер в информационный фрейм и вернуть фрейм данных из результата.

1 Ответ

2 голосов
/ 26 июня 2019

Да, вы можете просто присвоить значения обратно

df[:]= imputer.transform(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...