predict_proba() 预测单个值时的逻辑回归
predict_proba() Logistic Regression when predicting a single value
我想使用逻辑回归来预测 class(-1 或 +1)给定的数据集,我按如下方式拆分(测试集中只预测一个条目):
x_train, x_test = loc_indep[:-1], loc_indep[-1:]
y_train, y_test = loc_target[:-1], loc_target[-1:]
然后我使用以下方法训练模型:
regr = LogisticRegression()
regr.fit(x_train, y_train)
predictions = regr.predict(x_test)
probabilities = regr.predict_proba(x_test)
print(probabilities) # prints probabilities
鉴于上述情况,probabilities
总是打印 [1. 0.] 或 [0. 1.],这意味着选择 class +1 或 class -1 的概率为 100%。为什么会这样?我预计概率总和为 1,但模型选择 class +1 的概率为 54%。
您的代码似乎是正确的。所以这意味着你有一个超级准确的模型(这让我怀疑出了什么问题......)。我会建议检查你的训练数据,也许你有一些错误的变量,解释太多(例如相同的输出)。
也尝试输出训练的测试精度。如果训练准确率是 100% 而测试准确率低得多,那么你就过度拟合了。然后你将不得不改变一些超参数来避免它。
总而言之,试着理解你的数据,也许区分两者非常容易类,也许正因如此你获得了这么好的模型。
我想使用逻辑回归来预测 class(-1 或 +1)给定的数据集,我按如下方式拆分(测试集中只预测一个条目):
x_train, x_test = loc_indep[:-1], loc_indep[-1:]
y_train, y_test = loc_target[:-1], loc_target[-1:]
然后我使用以下方法训练模型:
regr = LogisticRegression()
regr.fit(x_train, y_train)
predictions = regr.predict(x_test)
probabilities = regr.predict_proba(x_test)
print(probabilities) # prints probabilities
鉴于上述情况,probabilities
总是打印 [1. 0.] 或 [0. 1.],这意味着选择 class +1 或 class -1 的概率为 100%。为什么会这样?我预计概率总和为 1,但模型选择 class +1 的概率为 54%。
您的代码似乎是正确的。所以这意味着你有一个超级准确的模型(这让我怀疑出了什么问题......)。我会建议检查你的训练数据,也许你有一些错误的变量,解释太多(例如相同的输出)。
也尝试输出训练的测试精度。如果训练准确率是 100% 而测试准确率低得多,那么你就过度拟合了。然后你将不得不改变一些超参数来避免它。
总而言之,试着理解你的数据,也许区分两者非常容易类,也许正因如此你获得了这么好的模型。