2016-09-15 2 views
0

Мой код довольно прост, но всегда выскакивает предупреждение, как это:предупреждение амортизации при использовании sklearn imputer

DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will 
raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if 
your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
(DeprecationWarning) 

Я не знаю, почему это не работает, даже если добавить s.reshape(-1,1) в круглые скобки fit_transforms.

Код следующее:

import pandas as pd 

s = pd.Series([1,2,3,np.nan,5,np.nan,7,8]) 
imp = Imputer(missing_values='NAN', strategy='mean', axis=0) 
x = pd.Series(imp.fit_transform(s).tolist()[0]) 
x 
+0

Попробуйте импортировать все библиотеки, которые вы используете. Здесь, например, «pd» - это панды, но он не уверен, что все это догадаются. –

+0

Вы получаете предупреждение или сообщение об ошибке? В случае предупреждения код все равно должен выполняться, поэтому, если это не так, у вас, вероятно, будет другая проблема. – UnholySheep

ответ

0

Помимо предупреждения, ваш фрагмент кода не интерпретировал мной из-за отсутствия import с, и ошибка (ufunc: isnan not supported), как только я получил некоторые импорт на место.

Этот код работает без предупреждения или ошибки, хотя:

In [39]: import pandas as pd 

In [40]: import numpy as np 

In [41]: from sklearn import preprocessing 

In [42]: s = pd.Series([1,2,3,np.nan,5,np.nan,7,8]) 

In [43]: imp = preprocessing.Imputer(strategy='mean', axis=0) 

In [44]: x = pd.Series(imp.fit_transform(s.values.reshape(1, -1)).tolist()[0]) 

In [45]: x 
Out[45]: 
0 1.0 
1 2.0 
2 3.0 
3 5.0 
4 7.0 
5 8.0 
dtype: float64 

Обратите внимание на следующее:

  1. import s

  2. preprocessing.Imputer(strategy='mean', axis=0) опускает ваш NAN спецификации (она должна быть NaN, но как NaN по умолчанию, вы можете просто стереть его).

  3. x = pd.Series(imp.fit_transform(s.values.reshape(1, -1)).tolist()[0]) преобразует из массива 1d в массив 2d.

Ваше предупреждение было о точке 3 - эта функция требует 2d-матрицы, а не 1d-вектора.

+0

Большое вам спасибо за ваш ответ! Извините, я не вставлял полные инструкции импорта ... но почему я должен удалить спецификацию NaN? Я удалил его, а потом он работает !!! –

+0

Если вы посмотрите на [документы] (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Imputer.html), вы можете сказать, что вы написали 'NAN', где он должен был быть 'NaN'. Поскольку это значение по умолчанию, вы можете просто стереть его. –

+0

А я вижу! Спасибо! –

Смежные вопросы