【问题标题】:I try imputing in sklearn but I have an error我尝试在 sklearn 中进行估算,但出现错误
【发布时间】:2020-08-12 13:17:17
【问题描述】:

我尝试下面的代码,但我有一些错误。

imp=SimpleImputer(missing_values='NaN',strategy="mean")
col = veriler.iloc[:,1:4].values
type(col) ##numpy.ndarray
imp=imp.fit(col)

ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。

【问题讨论】:

    标签: scikit-learn imputets


    【解决方案1】:

    您需要将无穷大值转换为有界值以应用插补。 np.nan_to_num 将 nan、inf 和 -inf 剪辑为可行的值。

    例如:

    import numpy as np
    from sklearn.impute import SimpleImputer
    imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
    X = [[7, np.inf, 3], [4, np.nan, 6], [10, 5, 9]]
    X = np.nan_to_num(X, nan=-9999, posinf=33333333, neginf=-33333333)
    imp_mean.fit(X)
    >>> SimpleImputer(add_indicator=False, copy=True, fill_value=None,
                  missing_values=nan, strategy='mean', verbose=0)
    

    对于变换,也可以应用:

    X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9], [np.nan, np.inf, -np.inf]]
    X = np.nan_to_num(X, nan=-9999, posinf=33333333, neginf=-33333333)
    print(imp_mean.transform(X))
    
    >>>
    [[-9.9990000e+03  2.0000000e+00  3.0000000e+00]
     [ 4.0000000e+00 -9.9990000e+03  6.0000000e+00]
     [ 1.0000000e+01 -9.9990000e+03  9.0000000e+00]
     [-9.9990000e+03  3.3333333e+07 -3.3333333e+07]]
    

    【讨论】:

    • 感谢 Pavithran,我解决了我的问题:missing_values='NaN' --------> missing_values=np.nan
    猜你喜欢
    • 2020-12-21
    • 2021-11-15
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    相关资源
    最近更新 更多