如何使用 sklearn.base.SimpleImputer 但 returns 和 pandas DataFrame 实现 sklearn 转换器
How to implement a sklearn transformer with sklearn.base.SimpleImputer but returns a pandas DataFrame
我想用 sklearn imputer 实现一个客户转换器,例如 sklearn.base.SimpleImputer。
输出应该是一个数据帧,
我有以下代码,但不确定这是否正确
class DFSimpleImputer(TransformerMixin):
def __init__(self, *args, **kwargs):
self.imp = SimpleImputer(*args, **kwargs)
def fit(self, X, y=None, **fit_params):
self.imp.fit(X)
return self
def transform(self, X):
# assumes X is a DataFrame
Ximp = self.imp.transform(X)
Xfilled = pd.DataFrame(Ximp, index=X.index, columns=X.columns)
return Xfilled
我上面的代码实际上每次测试都有效,它适合数据集,然后进行转换。最终结果被转换成 DataFrame。但缺点是,如果我们最终得到一个稀疏矩阵,SimpleImputer 的默认 return nparray 会比 DataFrame 更好。因此,将 nparray 转换为 dataframe 有利于研究目的,但在生产中我可能会切换回 nparray
是的,上面的代码有效,returns 一个数据框。您需要问的问题是为什么在构建转换器时需要 DataFrame(是的,它添加了标签以便于阅读)。也许 nparray 更好,因为您可能会遇到稀疏矩阵,而 DataFrame 会占用您所有的 RAM。
我想用 sklearn imputer 实现一个客户转换器,例如 sklearn.base.SimpleImputer。
输出应该是一个数据帧,
我有以下代码,但不确定这是否正确
class DFSimpleImputer(TransformerMixin):
def __init__(self, *args, **kwargs):
self.imp = SimpleImputer(*args, **kwargs)
def fit(self, X, y=None, **fit_params):
self.imp.fit(X)
return self
def transform(self, X):
# assumes X is a DataFrame
Ximp = self.imp.transform(X)
Xfilled = pd.DataFrame(Ximp, index=X.index, columns=X.columns)
return Xfilled
我上面的代码实际上每次测试都有效,它适合数据集,然后进行转换。最终结果被转换成 DataFrame。但缺点是,如果我们最终得到一个稀疏矩阵,SimpleImputer 的默认 return nparray 会比 DataFrame 更好。因此,将 nparray 转换为 dataframe 有利于研究目的,但在生产中我可能会切换回 nparray
是的,上面的代码有效,returns 一个数据框。您需要问的问题是为什么在构建转换器时需要 DataFrame(是的,它添加了标签以便于阅读)。也许 nparray 更好,因为您可能会遇到稀疏矩阵,而 DataFrame 会占用您所有的 RAM。