使用逻辑回归模型获得 1 而不是 [0;1] 的预测概率
Get predictions probability of 1 rather than [0;1] using Logistic Regression model
我在训练集和测试集上安装了 LogisticRegression
并获得了 ~80% 的准确度
然后我想对测试集进行预测,根据它们是否 answered_correctly
给出每个 student_id
的分数 [如果是则为 1,如果不是则为 0]。
我这样做了:
features_X = X.columns # getting columns names of X
# X_test is an array created from a previous train_test_split step.
test_df = pd.DataFrame(columns=features_X, data=X_test)
predictions = grid_logit.predict(test_df[features_X])
#Create a DataFrame with predictions
submission = pd.DataFrame({'Id':test_df['student_id'],'Answered_correctly':predictions})
#Visualize the first 5 rows
submission.head()
Id Answered_correctly
12992348 0
7268428 0
9497321 1
588792 1
5045118 1
如您所见,class将每个用户定义在 0 和 1 之间。
我想要的是这样的:
Id Answered_correctly
12992348 0.32
7268428 0.52
9497321 0.65
answered_correctly_
对应于 class 1 的概率的值。
注意:使用 predict_proba
函数 returns 出错:
Exception: Data must be 1-dimensional
编辑:
我用 predict_proba(test_df[[features_X]])
替换了 predict
但它 returns 一个错误:None of [[ features_X cols]] are in the [columns]
predict_proba
returns 每个 class 的概率估计。鉴于您有两个 classes(0 和 1),它将 return 一个形状为 (n_samples, 2)
.
的数组
错误消息源自 pandas 数据框,因为它要求您仅传递一维数据。如上所述,predictions
只是一个二维输出。
只将 class 1 (predictions[:, 1]
) 的概率估计传递给数据框构造函数,它应该可以正常工作:
submission = pd.DataFrame({'Id': test_df['student_id'], 'Answered_correctly': predictions[:, 1]})
补充说明:
如果 test_df
具有 features_X
给出的所有列,则不需要传递 test_df[features_X]
因为 test_df
应该足够了:
predictions = grid_logit.predict_proba(test_df)
我在训练集和测试集上安装了 LogisticRegression
并获得了 ~80% 的准确度
然后我想对测试集进行预测,根据它们是否 answered_correctly
给出每个 student_id
的分数 [如果是则为 1,如果不是则为 0]。
我这样做了:
features_X = X.columns # getting columns names of X
# X_test is an array created from a previous train_test_split step.
test_df = pd.DataFrame(columns=features_X, data=X_test)
predictions = grid_logit.predict(test_df[features_X])
#Create a DataFrame with predictions
submission = pd.DataFrame({'Id':test_df['student_id'],'Answered_correctly':predictions})
#Visualize the first 5 rows
submission.head()
Id Answered_correctly
12992348 0
7268428 0
9497321 1
588792 1
5045118 1
如您所见,class将每个用户定义在 0 和 1 之间。
我想要的是这样的:
Id Answered_correctly
12992348 0.32
7268428 0.52
9497321 0.65
answered_correctly_
对应于 class 1 的概率的值。
注意:使用 predict_proba
函数 returns 出错:
Exception: Data must be 1-dimensional
编辑:
我用 predict_proba(test_df[[features_X]])
替换了 predict
但它 returns 一个错误:None of [[ features_X cols]] are in the [columns]
predict_proba
returns 每个 class 的概率估计。鉴于您有两个 classes(0 和 1),它将 return 一个形状为 (n_samples, 2)
.
错误消息源自 pandas 数据框,因为它要求您仅传递一维数据。如上所述,predictions
只是一个二维输出。
只将 class 1 (predictions[:, 1]
) 的概率估计传递给数据框构造函数,它应该可以正常工作:
submission = pd.DataFrame({'Id': test_df['student_id'], 'Answered_correctly': predictions[:, 1]})
补充说明:
如果 test_df
具有 features_X
给出的所有列,则不需要传递 test_df[features_X]
因为 test_df
应该足够了:
predictions = grid_logit.predict_proba(test_df)