【问题标题】:Error with NaN using sklearn in python在 python 中使用 sklearn 时出现 NaN 错误
【发布时间】:2017-06-23 17:21:53
【问题描述】:

我的代码:

### Working with NaN using sklearn
import numpy as np
from sklearn.preprocessing import Imputer
### Mean strategy
imp = Imputer(missing_values='NaN', strategy='mean', axis=1) 
imp.fit([1,5,9,np.NaN])
X = [1,5,9,np.NaN]
y = imp.transform(X)
print (y)

运行后,我收到以下警告消息: C:\Users\Admin\Anaconda3\lib\site-packages\sklearn\utils\validation.py:386: DeprecationWarning: Passing 1d arrays as data 在 0.17 中被弃用,并且会在 0.19 中引发 ValueError。如果您的数据具有单个特征,则使用 X.reshape(-1, 1) 重塑您的数据,如果它包含单个样本,则使用 X.reshape(1, -1) 重塑您的数据。弃用警告)

如何解决?我尝试了重塑,但它给出了错误消息: “list”对象没有“reshape”属性

请帮忙。

【问题讨论】:

  • 你应该在这里创建一个数组 imp.fit([1,5,9,np.NaN]) 更改为 imp.fit(np.array([1,5,9,np.NaN]))X = [1,5,9,np.NaN] 应该是 X = np.array([1,5,9,np.NaN]) 不确定你是否仍然需要重塑但类型至少与 sklearn 兼容
  • Stii 出现以下错误:------------------------ -------------------------------------- TypeError Traceback (最近一次调用最后一次) in () 3 from sklearn.preprocessing import Imputer 4 imp = Imputer(missing_values='NaN', strategy='mean', axis=1) ### Mean strategy ----> 5 imp.fit(np.array[1,5,9,np.NaN]) 6 #X.reshape(-1, 1) 7 X =np.array([1,5,9,np.NaN]) 类型错误: 'builtin_function_or_method' 对象不可下标

标签: python


【解决方案1】:

所以我运行了您的代码并更改了X 做一个 2d 列表...原来是因为您传递了一个 1D 数组来进行转换,所以它给您带来了错误...所以我把它变成了一个 2D 列表

import numpy as np
from sklearn.preprocessing import Imputer
### Mean strategy
imp = Imputer(missing_values='NaN', strategy='mean', axis=1)
imp.fit([1,5,9,np.NaN])
X = [[1,5,9,np.NaN]]           # < =========== The change that I made 
y = imp.transform(X)
print(y)
enter code here

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2017-01-15
    • 2018-10-12
    • 2017-02-06
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多