ValueError: Ввод содержит NaN, бесконечность или ..... ('float32') - PullRequest
0 голосов
/ 13 мая 2019

Попытка выяснить, почему я продолжаю получать сообщение, указанное в заголовке этого вопроса. Я думаю, что я уже очистил данные, удалив NaN. Кто-нибудь может мне помочь?

Глядя на набор данных с 11K строками, я пытаюсь сделать так, чтобы данные кода обучали, чтобы предсказать уровень отсева учащихся. Использование обычного ноутбука с Windows, а также улучшение анализа данных.

# divide the data set into categorial and non categorial features and apply models to get the insight of the data
print("\nDEFINING CATEGORICAL AND NUMERICAL FEATURES")
categorical_features = X.select_dtypes(include=['object']).columns
print(categorical_features)
numerical_features = X.select_dtypes(exclude = ["object"]).columns
print(numerical_features)

print("\nDIVIDE THE DATA SET INTO CATEGORIAL AND NON CATEGORIAL FEATURES AND APPLY MODELS TO GET THE INSIGHT OF THE DATA")
print("Numerical features : " + str(len(numerical_features)))
print("Categorical features : " + str(len(categorical_features)))

print("\nFILLING THE MISSING VALUE OF TEST WITH THEIR MEAN VALUE, FOR BETTER ACCURACY")

test = test.select_dtypes(exclude=[np.object])
test.info()
test = test.fillna(test.mean(), inplace=True)
print("\nAPPLYING MODEL RANDOM FOREST REGRESSOR")

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from warnings import simplefilter
# ignore all future warnings
simplefilter(action='ignore', category=FutureWarning)

# pull data into target (y) and predictors (X)
predictor_cols = ['F18 ECTS på kurser med beståede talkarakter']

# -------------------------------------------

# Create training predictors data
train_X = X[predictor_cols]
my_model = RandomForestRegressor()
my_model.fit(train_X, y)
my_model.score(train_X, y)
print(predictor_cols)
print(my_model.score(train_X, y))

test = pd.read_csv("…_test.csv")

# -------------------------------------------

print("\nPRINT PREDICTED FACTORS")
test_X = test[predictor_cols]

#  model to make predictions

predicted_factor = my_model.predict(test_X)

#  at the predicted prices to ensure something sensible.

print(predicted_factor)

Получить большую часть моего кода работает нормально, кроме:

APPLYING MODEL RANDOM FOREST REGRESSOR
Traceback (most recent call last):
  File "C:/Users/jcst/PycharmProjects/Frafaldsanalyse/DefiningCatAndNumFeatures_4_new.py", line 142, in <module>
    my_model.fit(train_X, y)
  File "C:\Users\jcst\PycharmProjects\Frafaldsanalyse\venv\lib\site-packages\sklearn\ensemble\forest.py", line 250, in fit
    X = check_array(X, accept_sparse="csc", dtype=DTYPE)
  File "C:\Users\jcst\PycharmProjects\Frafaldsanalyse\venv\lib\site-packages\sklearn\utils\validation.py", line 573, in check_array
    allow_nan=force_all_finite == 'allow-nan')
  File "C:\Users\jcst\PycharmProjects\Frafaldsanalyse\venv\lib\site-packages\sklearn\utils\validation.py", line 56, in _assert_all_finite
    raise ValueError(msg_err.format(type_err, X.dtype))
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').

Process finished with exit code 1

1 Ответ

0 голосов
/ 13 мая 2019

Как уже говорилось, ваш набор данных X_train или y должен содержать nan с.Проверьте еще раз, чтобы увидеть, откуда это.Обычно это происходит из-за деления на 0 или ошибки домена математических функций, таких как журнал отрицательных значений.

Что-то еще, что вы собираетесь выполнить после:

Вы используете test = test.fillna(test.mean(), inplace=True)

Вы должны использовать test = test.fillna(test.mean())

Или test.fillna(test.mean(), inplace=True)

При указании inplace=True функция возвращает None, поэтому test равно None.

Также вы делаете все это без использования, поскольку вы перезаписываете test, читая позже DataFrame.Может быть, у вас здесь непреднамеренное поведение.

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