我正在使用 sklearn 和pandas.DataFrame. 我为基于 dataFrame 的列名的不同列实施了不同的插补策略。例如 NAs 预测器'var1'我用 0 和'var2'平均值来估算。
当我尝试使用它交叉验证我的模型时,train_test_split它会返回一个nparray没有列名的模型。如何在此 nparray 中估算缺失值?
PS 在故意拆分之前,我不会在原始数据集中估算缺失值,因此我将测试集和验证集分开保存。
我正在使用 sklearn 和pandas.DataFrame. 我为基于 dataFrame 的列名的不同列实施了不同的插补策略。例如 NAs 预测器'var1'我用 0 和'var2'平均值来估算。
当我尝试使用它交叉验证我的模型时,train_test_split它会返回一个nparray没有列名的模型。如何在此 nparray 中估算缺失值?
PS 在故意拆分之前,我不会在原始数据集中估算缺失值,因此我将测试集和验证集分开保存。
你能不能把你的np.array从train_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 选项。