Ввести двоичные значения в python - PullRequest
0 голосов
/ 29 января 2020

У меня есть фрейм данных с пропущенными значениями, где возможные варианты - True или False, поскольку есть случаи NaN 1

Как добавить ограничение, чтобы получить только 0 и 1? в настоящее время я использую библиотеку отсутствующего ПО

from missingpy import MissForest

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Не возражаете ли вы дополнить свой вопрос некоторыми примерами данных, которые вы используете, и кодом, который дает вам проблемы - это сделает ваши ответы лучше?

Из того, что вы говорите, похоже на модель быть подходящим означает рассматривать вашу целевую переменную как непрерывную, а не категориальную (логическое значение по существу является категориальным 0 или 1). Документация API на MissForest гласит:

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

Это означает, что вы должны указать cat_vars на этапе подгонки:

fit (self, X, y = None, cat_vars = None): установить импуттер на X.

Parameters
----------
X : {array-like}, shape (n_samples, n_features)
    Input data, where ``n_samples`` is the number of samples and
    ``n_features`` is the number of features.

cat_vars : int or array of ints, optional (default = None)
    An int or an array containing column indices of categorical
    variable(s)/feature(s) present in the dataset X.
    ``None`` if there are no categorical variables in the dataset.

Returns
-------
self : object
    Returns self.

Ссылка здесь .

Это будет означать, что будет вменяться с использованием категорий, а не с непрерывными значениями.

0 голосов
/ 04 февраля 2020

У вас есть несколько стратегий, связанных с nan, давайте рассмотрим эту игрушку df:

import pandas as pd
import numpy as np


df = pd.DataFrame(
    {
        'column': [np.nan, True, np.nan]
    }
)
print(df['column'])

>>> 
0     NaN
1    True
2     NaN
Name: column, dtype: object

Вы можете просто принудительно заставить тип столбца bool, если вы можете позволить себе работать с поврежденными данными (не рекомендуется):

print(df['column'].astype(bool))

>>> 
0    True
1    True
2    True
Name: column, dtype: bool

Вы можете удалить строки, содержащие nan (лучший подход):

print(df['column'].dropna())

>>>
1    True
Name: column, dtype: object

Или вы можете заменить эти nan значением по умолчанию значение:

print(df['column'].fillna(False))

>>>
0    False
1     True
2    False
Name: column, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...