【问题标题】:sklearn: TypeError: fit() missing 1 required positional argument: 'x"sklearn:TypeError:fit()缺少1个必需的位置参数:“x”
【发布时间】:2019-06-13 11:04:54
【问题描述】:

在尝试运行时

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values ="NaN", strategy = "mean")
imputer = SimpleImputer.fit(X[:,1:3])
X[:,1:3] = SimpleImputer.transform(X[:,1:3])

我遇到了一个错误

TypeError: fit() 缺少 1 个必需的位置参数:'X'

但我已经提供了 x,对吗? 解决办法是什么?

【问题讨论】:

  • X的值是多少?
  • “fit”方法只接受 numpy 数组作为输入。所以请确保它是正确的类型
  • dataset = pd.read_csv('data.csv') X = dataset.iloc[:,: -1].values
  • @gireesh4manu 我为 x 提供了这个

标签: python scikit-learn


【解决方案1】:

您的代码:

from sklearn.impute import SimpleImputer
# PAY ATTENTION: to NaN as np.nan
imputer = SimpleImputer(**missing_values ="NaN"**, strategy = "mean")
imputer = SimpleImputer.fit(X[:,1:3])
# PAY ATTENTION: instead of "SimpleImputer.transform" use "imputer.transform"
X[:,1:3] = **SimpleImputer**.transform(X[:,1:3])

正确代码:

from sklearn.impute import SimpleImputer  
imputer = SimpleImputer(missing_values=np.nan, strategy='mean',fill_value=None, verbose=0, copy=True)  
imputer = imputer.fit(X[:, 1:3])  
X[:, 1:3] = imputer.transform(X[:, 1:3])

【讨论】:

    【解决方案2】:

    完整的代码如下所示:

    from sklearn.impute import SimpleImputer
    imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
    imputer = imputer.fit(X[:,1:3])
    X[:,1:3] = imputer.transform(X[:,1:3])
    

    请注意:

    missing_values = np.nan
    

    【讨论】:

      【解决方案3】:

      根据this Scikit-learn module,正确的语法应该是:

      imputer.fit(X[:,1:3])

      代替:

      imputer = SimpleImputer.fit(X[:,1:3])

      【讨论】:

      • 它工作但引发了另一个异常。实际上,我正在尝试用其他观察的平均值替换“NaN”值
      • ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
      • X 是否包含 NaN 或 inf 值?
      • 是的,它包含 NaN 值,这就是我试图用其他观察值的平均值来替换的值@Sheldon
      猜你喜欢
      • 2021-09-11
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 2017-03-27
      • 2019-11-12
      • 2019-12-23
      相关资源
      最近更新 更多