如何在Scikit-learn运行predict_proba()后保留原始行索引
问题解答
问题1:保留X_test原始行索引的方法
predict_proba()本身返回的是无索引的numpy数组,不会主动保留输入数据的索引,你只需要在创建DataFrame时手动指定index参数为X_test的原始索引即可,修改后的代码如下:
df_proba = pd.DataFrame(model.predict_proba(X_test)[:,1], columns=['proba'], index=X_test.index)
这样生成的df_proba的行索引就和X_test完全一致,之后可以直接用索引合并的方式和存储person_id、score的表拼接,不会出现行匹配错误。
问题2:predict_proba输出的行顺序规则
sklearn所有预测类方法(包括predict()、predict_proba()、predict_log_proba()等)的输出行顺序,和输入特征集的行顺序完全一致,不会主动打乱或重排顺序。
只要你没有在获取person_id、score之后对测试集的行顺序做过排序、打乱、筛选等调整,直接通过pd.concat([存储person_id和score的测试集表, df_proba], axis=1)按列拼接是完全可行的,不会出现行对应错误。
内容的提问来源于stack exchange,提问作者rboemer
相关产品推荐
相关产品推荐

