如何在 pandas.DataFrame 的 train_test_split 创建的 numpy 数组上估算缺失值?

数据挖掘 熊猫 交叉验证 scikit-学习
2022-03-13 09:13:44

我正在使用 sklearn 和pandas.DataFrame. 我为基于 dataFrame 的列名的不同列实施了不同的插补策略。例如 NAs 预测器'var1'我用 0 和'var2'平均值来估算。

当我尝试使用它交叉验证我的模型时,train_test_split它会返回一个nparray没有列名的模型。如何在此 nparray 中估算缺失值?

PS 在故意拆分之前,我不会在原始数据集中估算缺失值,因此我将测试集和验证集分开保存。

2个回答

你能不能把你的np.arraytrain_test_split后面变成一个pandas.DataFrame,这样你就可以执行同样的策略。这在我处理 pandas 和 scikit 时很常见。例如,

 a = train_test_split
 new_df = pd.DataFrame(a)

从您在评论中提到的链接中,如果您遵循第一个解释,训练集和测试集应该采用数据框的形式。

在这种情况下,您可以执行以下操作:

df[variable] = df[variable].fillna(df[variable].median())

您可以选择用什么来填充 N/A 值,请查看链接。 http://pandas.pydata.org/pandas-docs/stable/missing_data.html

如果您遵循第二个解释,使用 sklearn 的交叉验证,您可以实施 mike1886 将数组转换为数据帧的建议,然后使用 fillna 选项。