Простой импутер удалить нан вместо импутации - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь вменять значения NaN с помощью SimpleImputer средней стратегии, но вместо вменения он удаляет NaN значения, я читал, как его использовать здесь и документация , он просто не работает со списком numpy или списками python, что не так? а в чем решение?

import numpy as np
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split

X = np.array([[2,3,6,5,4, np.nan],[2,3,6,15,4, np.nan]])

SI = SimpleImputer(strategy='mean')
X = SI.fit_transform(X)
print(X)

вывод

runfile('D:/python projects/untitled0.py', wdir='D:/python projects')
[[ 2.  3.  6.  5.  4.]
 [ 2.  3.  6. 15.  4.]]

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020
In [239]: SI=SimpleImputer(verbose=1)                                                          
In [240]: SI.fit_transform(X)                                                                  
/usr/local/lib/python3.6/dist-packages/sklearn/impute/_base.py:403: UserWarning: Deleting features without observed values: [5]
  "observed values: %s" % missing)
Out[240]: 
array([[ 2.,  3.,  6.,  5.,  4.],
       [ 2.,  3.,  6., 15.,  4.]])

настройка X:

In [241]: X = np.array([[2,3,6,5,4, np.nan],[2,3,6,15,np.nan, 4]])                             
In [242]: SI.fit_transform(X)                                                                  
Out[242]: 
array([[ 2.,  3.,  6.,  5.,  4.,  4.],
       [ 2.,  3.,  6., 15.,  4.,  4.]])
1 голос
/ 26 февраля 2020

Все значения в последнем столбце Nan в ваших данных. Следовательно, импутер удаляет этот столбец, потому что он не знает, какое значение должно быть вменено. Убедитесь, что в ваших данных есть хотя бы одно не Nan значение, позволяющее работать imputer.

X = np.array([[2,3,6,5,4, np.nan],
              [2,3,6,15,4, np.nan], 
              [1,2,6,2,4, 1] ])

SI = SimpleImputer(strategy='mean')
SI.fit_transform(X)


# Output:
[[ 2.  3.  6.  5.  4.  1.]
 [ 2.  3.  6. 15.  4.  1.]
 [ 1.  2.  6.  2.  4.  1.]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...