首页 > 解决方案 > 如何使用数据框在函数中编写 sklearn.SimpleImputer?

问题描述

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='most_frequent')
df_titanic['age'] = imputer.fit_transform(df_titanic[['age']])
df_titanic['age']

我想把它写在一个函数中以使其可重用。我尝试了几种方法,但都给出了错误。

def simple_imputer_func(data,strategy):
    simple_imputer = impute.SimpleImputer(strategy=strategy)
    X_num = simple_imputer.fit_transform(data)
    return X_num
X_num = np.array(simple_imputer_func(df_titanic['age'],'most_frequent'))

这也给出了错误

def imputer_func(data, imputer, strategy):
    simple_imputer = impute.imputer(strategy=strategy)
    X_num = simple_imputer.fit_transform(data)
    return X_num
X_num = np.array(simple_imputer_func(df_titanic['age'], SimpleImputer, 'most_frequent'))

有没有办法可以将它们写在一个函数中,然后给函数命名为 imputer 选择哪个?

标签: pythonmachine-learningscikit-learndata-analysisimputation

解决方案


我的猜测是,当你df_titanic['age']作为参数传递给你的函数时,它就是一个pandas.Series对象。你想要一个pandas.DataFrame.

在原始代码中,您使用的是df_titanic[['age']],它提供了从 Dataframe 中选择的单列(年龄)的列表。这将返回pandas.DataFrame仅包含年龄列的 a,而不是pandas.Series包含列中的值的 a。


推荐阅读