Вопрос о Python Выбор функции (нулевые значения) - PullRequest
0 голосов
/ 02 февраля 2020

Я строю регрессионную модель логистики c и хочу понять, какие функции больше всего влияют на мой результат (1 или 0). Пытаясь понять, возвращается ли клиент на мой сайт, какие функции заставляют его возвращаться. Я застреваю с этой функцией подгонки. Это ошибка для меня, и я не могу понять, почему. Кажется, это указывает на то, что у меня есть некоторые нулевые значения, но я просмотрел свои данные и удалил нулевые значения.

import pandas as pd
import numpy as np
from sklearn import preprocessing
import matplotlib.pyplot as plt
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

#load data
df = pd.read_csv('jupyter.csv', header = 0)
array = dataframe.values
X = array[:,1:13]
Y = array[:,14]
print (X.shape)
print (Y.shape)
(544219, 12)
(544219,)

# feature extraction
test = SelectKBest(score_func=chi2, k=4)
fit = test.fit(X, Y)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-63-f91db4d08897> in <module>
      1 # feature extraction
      2 test = SelectKBest(score_func=chi2, k=4)
----> 3 fit = test.fit(X, Y)
      4 # summarize scores
      5 #numpy.set_printoptions(precision=3)

/opt/anaconda3/lib/python3.7/site-packages/sklearn/feature_selection/univariate_selection.py in fit(self, X, y)
    339         self : object
    340         """
--> 341         X, y = check_X_y(X, y, ['csr', 'csc'], multi_output=True)
    342 
    343         if not callable(self.score_func):

/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
    720     if multi_output:
    721         y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,
--> 722                         dtype=None)
    723     else:
    724         y = column_or_1d(y, warn=True)

/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    540         if force_all_finite:
    541             _assert_all_finite(array,
--> 542                                allow_nan=force_all_finite == 'allow-nan')
    543 
    544     if ensure_min_samples > 0:

/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in _assert_all_finite(X, allow_nan)
     58     elif X.dtype == np.dtype('object') and not allow_nan:
     59         if _object_dtype_isnan(X).any():
---> 60             raise ValueError("Input contains NaN")
     61 
     62 
ValueError: Input contains NaN

1 Ответ

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

Вы можете вменять пропущенные значения, используя:

  • SimpleImputer или
  • , используя pandas fillna(). Например, следующий код будет вменять все пропущенные значения с среднее :
X.fillna(X.mean())
...