2016-12-27 4 views
0

Я пытаюсь использовать logistic.fit(). Как исправить ошибку?logistic.fit() erorr в LogisticRegression

Input contains NaN, infinity or a value too large for dtype('float64'). 

Вот часть моего кода: (Пол и фамилия являются строками)

xtr = pd.get_dummies([['Age','Fee', 'Size','Floor', 'Class', 'Surname' ]]) 
    import pandas as pd 
    from sklearn.linear_model import LogisticRegression 
    logistic = LogisticRegression() 
    logistic.fit(xtr , ytr) 
+0

У вас есть проблемы с вашими x или y. Если вы делаете это 'df.isnull(). Sum (axis = 1)', и любая строка возвращает число больше 0, то, очевидно, ваши данные не имеют значений. Как вы с ними справляетесь, это зависит от других вещей. –

+0

Я сделал это, и почти вся строка имеет больше 0, так как это исправить? если я загружу весь код actaul, это может помочь? –

ответ

0

Так у вас есть несколько вариантов.

Вариант 1:

df_clean = df.dropna() 

Это удаляет все значения NA. Не рекомендуется, если у вас мало наблюдений.

Вариант 2:

df["Column_Name"].fillna(df["Column_Name"].mean(), inplace=True) 

Это заменяет все отсутствующие значения со средним значением, в качестве альтернативы вы можете сделать median, а также. Очевидно, что это будет работать только для числовых столбцов.

Вариант 3:

df = df[pd.notnull(df['Column_Name'])] 

Здесь вы можете указать, какие столбцы вы хотите отказаться от NaN значения из. Это будет работать в сочетании с вариантом 2, если некоторые из ваших столбцов являются категориальными, а другие - числовыми.

Вариант 4:

df.fillna(0) 

Заполните все ваши NaN значения с 0. Вы можете сделать это вместо варианта 2, ваш звонок. В любом случае этого должно быть достаточно, чтобы вы начали думать о том, как вы можете решить свою проблему. Поскольку вы знакомы с данными, вы должны лучше знать, как справиться с этим. Если у вас есть какие-то конкретные вопросы, я был бы более чем счастлив помочь.