关于Python功能选择的问题(空值)

问题描述 投票:0回答:1

我正在构建逻辑回归模型,并想了解对我的输出贡献最大的功能(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
python pandas machine-learning scikit-learn missing-data
1个回答
1
投票

您可以使用以下方法归因缺少值:

  • SimpleImputer
  • 使用熊猫SimpleImputer。例如,以下代码将使用mean
  • 插入所有缺少的值
fillna()
© www.soinside.com 2019 - 2024. All rights reserved.