Вход содержит бесконечное значение, слишком большое для dtype "float64" - PullRequest
0 голосов
/ 07 апреля 2020

Итак, я довольно новичок в python в целом и пытаюсь следовать учебному пособию, чтобы нормализовать и масштабировать все мои данные; однако, я продолжаю получать ошибку. Я использую Scikit-Learn с pandas. Я искал и попробовал почти все, что мог придумать, но все еще получаю эту ошибку.

Я продолжаю получать эту ошибку, которая восходит к preprocessing.scale:

ValueError: Input contains infinity or a value too large for dtype('float64').

Столбец, который возвращает ошибку, имеет минимум -10.3800048828125 и максимум 10.209991455078123. Все типы данных float64 или int64 (но не в этом столбце). Я пробовал несколько методов избавления от бесконечностей и NaN, но ни один из них, похоже, не работает. Если у кого-нибудь есть какой-либо совет, он будет очень признателен!

Код, который вызывает проблему, находится здесь:

def preprocess_df(df):
    df = df.drop('future', 1)
    df.replace([np.inf, -np.inf], np.nan)
    df.fillna(method='bfill', inplace=True)
    df.dropna(inplace=True)

    for col in df.columns:
        print("Trying Column: " + col)
        if col != "target":
            df[col] = df[col].pct_change()
            df.dropna(inplace=True)
            df[col] = preprocessing.scale(df[col].values)
    df.dropna(inplace=True)

    sequential_data = []
    prev_days = deque(maxlen=SEQ_LEN)

    for i in df.values:
        prev_days.append([n for n in i[:-1]]) #appends every column to the prev days list, except for target (we don't want that to be known)
        if len(prev_days) == SEQ_LEN:
            sequential_data.append([np.array(prev_days), i[:-1]])

    random.shuffle(sequential_data)

1 Ответ

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

Вот ваша проблема: df.replace([np.inf, -np.inf], np.nan).

Измените код на df = df.replace([np.inf, -np.inf], np.nan).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...