【发布时间】:2019-10-01 16:03:49
【问题描述】:
我正在使用 Python 中的逻辑回归构建客户流失预测模型。我的模型精度为 0.47,仅预测 0。实现的 y 变量实际上是 81 个 0 和 92 个 1。
我拥有的数据集只有几个特征和 220 个用户(记录)。如果我设置一个参考时间,那就更少了(大约 123 条记录用于训练集,173 条用于测试集)。所以我认为样本量太小,无法使用逻辑回归。但我还是尝试了,因为这只是一个样本测试,所以我只得到了这个小数据集。 (理论上数据比较多)
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(x_train, y_train)
y_pred = logreg.predict(x_test)
print('Accuracy: {:.2f}'.format(logreg.score(x_test, y_test)))
即使我不测试模型,这意味着我使用整个数据集来构建模型,当我预测未来的流失时,它仍然只返回 0。 是我的样本量太小,还是因为精度小于 0.5 所以它只返回一个值(这里是 0)?还是我在代码中做错了什么?
非常感谢!
【问题讨论】:
-
可能是各种各样的东西。绘制数据。这些类在预测空间中实际上是可分离的吗?训练集是否代表测试集?
-
如何拆分成train和test?你确定训练集中有 0 和 1 吗?
-
我使用了一个参考时间 A。在 A 之前它进入了训练集。在定义流失的 A+ 天之前,它会进入测试集。在当前时间之前,它用于预测。是的,在训练集中有 1 和 0。
标签: python logistic-regression