我想使用Logistic Regression来预测一个类别(-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) # 打印概率
基于上述代码,probabilities
总是打印出[1. 0.]或[0. 1.],这意味着类别+1或类别-1被选中的概率为100%。为什么会这样?我期望概率总和为1,但模型会选择,例如,类别+1的概率为54%。
回答:
你的代码看起来是正确的。所以这意味着你有一个超级准确的模型(这让我怀疑有什么问题…)。我建议检查你的训练数据,也许你有一些变量,因为错误的原因,解释得太过充分(例如相同的输出)。
另外,尝试输出训练和测试的准确率。如果训练准确率是100%而测试准确率低很多,你就出现了过拟合。然后你需要调整一些超参数来避免它。
总之,尝试理解你的数据,也许区分这两个类别非常容易,这可能是你得到如此好的模型的原因。