我的代码非常简单,但它总是弹出这样的警告:
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 :(得分: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
请注意以下事项:
import
Š
preprocessing.Imputer(strategy='mean', axis=0)
省略了您的NAN
规范(应该是NaN
,但由于NaN
是默认设置,您可以将其删除)。
x = pd.Series(imp.fit_transform(s.values.reshape(1, -1)).tolist()[0])
从1d数组转换为2d数组。
你的警告是关于第3点的 - 这个函数想要一个2d矩阵,而不是1d向量。