Пользователям Python MissForest придется самостоятельно выполнять кодирование категориальных признаков.Python

Программы на Python
Ответить
Anonymous
 Пользователям Python MissForest придется самостоятельно выполнять кодирование категориальных признаков.

Сообщение Anonymous »

Я пытаюсь использовать Missforest в Python для вменения пропущенных значений в наборе данных, но у меня возникают проблемы с категориальными значениями.
В исходной документации приведен пример:

Код: Выделить всё

categorical=["sex", "smoker", "region", "children"]

# Default estimators are lgbm classifier and regressor
mf = MissForest(categorical=categorical)
mf.fit(x=train)
Но когда я пытаюсь использовать его вот так внутри класса, который я создаю:

Код: Выделить всё

from missforest import MissForest
from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

mf = MissForest(
clf=RandomForestClassifier(n_jobs=-1),
rgr=RandomForestRegressor(n_jobs=-1),
categorical=list(self.data.select_dtypes(exclude='number').columns)
)
self.data = mf.fit_transform(self.data)
Это выдает ошибку

Предупреждение пользователя: кодирование меток больше не выполняется по умолчанию. Пользователям придется самостоятельно кодировать категориальные функции.

Все мои попытки кодировать их самостоятельно, например:

Код: Выделить всё

from missforest import MissForest
from sklearn.preprocessing import OrdinalEncoder
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor

# Categorical + numeric columns
cat_cols = list(self.data.select_dtypes(exclude='number').columns)
num_cols = list(self.data.select_dtypes(include='number').columns)

# Encode categorical columns safely
encoders = {}
for col in cat_cols:
enc = OrdinalEncoder()
self.data.loc[:, col] = enc.fit_transform(self.data[[col]].astype(str))
encoders[col] = enc

# Initialize MissForest
mf = MissForest(
clf=RandomForestClassifier(n_jobs=-1),
rgr=RandomForestRegressor(n_jobs=-1),
categorical=cat_cols
)

# Fit + transform
self.data = mf.fit_transform(self.data)

# Decode categorical columns
for col in cat_cols:
self.data.loc[:, col] = encoders[col].inverse_transform(self.data[[col]])
Я видел, как кто-то задал здесь аналогичный вопрос и ответил

сначала попробуйте закодировать переменные, а затем используйте эту модифицированную версию Missforest

но они не указали, какой метод кодирования использовать, и обновленная версия Missforest по-прежнему не работает.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... ding-by-th
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»