【问题标题】:How to Use SimpleImputer on a 1D Array?如何在一维数组上使用 SimpleImputer?
【发布时间】:2020-10-29 13:21:30
【问题描述】:

我的因变量列中有一个包含多个 NaN 值的数据集。我已将该集合拆分为因变量和自变量,我目前正在尝试用 0 替换因变量列中的所有 NaN 值。但是,在为此目的使用 SimpleImputer 时出现错误。

这是我的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

"""
----- Read Dataset and Split into Dependent and Independent Variables: -----
"""
dataset = pd.read_csv('Salary_Data.csv')
x = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values

print("\nIndependent Variables: \n%s" % x)
print("\nDependent Variables: \n%s" % y)


"""
----- Fill in Missing Values: -----
"""
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = 'constant', fill_value = 0)
y = imputer.fit(y)

print("\nDependent Variables After Missing Values Adjusted: \n%s" % y)

这是我得到的错误:

Expected 2D array, got 1D array instead:
array=[270000. 200000. 250000.     nan 425000.     nan     nan 252000. 231000.
     nan 260000. 250000.     nan 218000.     nan 200000. 300000.     nan

【问题讨论】:

  • 错误到底是在哪里弹出的?请使用完整的错误跟踪更新您的问题。

标签: python machine-learning scikit-learn imputation


【解决方案1】:

你可以使用pandas.DataFrame.fillna函数直接把所有nan的地方填0。

y.fillna(0, inplace=True)

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 2015-01-21
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多