我一直试图在一组数据上测试一个布尔值的预测一段时间,我从来没有达到任何远程满意的效果。 我的测试数据如下所示:
+-----+-----+-----+-------+-----------+---------+---------+---------+---------+---------+--------+-------+
|ismob|cprom|ccoup|tmodals| idxtp| ptaddr|addrtopay| paytthx| paytacc| acctthx|churncpt|churned|
+-----+-----+-----+-------+-----------+---------+---------+---------+---------+---------+--------+-------+
|false| 0030| 6728| 1| 71.0| 71.0| 161.0| 1518.0| 1496.0| 22.0| 2| true
|false| 0030| 6728| 1| 137.0| 55.0| 90.0| 151.0| 0.0| 0.0| 1| true
|false| 0030| 6728| 1| 178.0| 40.0| 41.0| 226.0| 60.0| 166.0| 0| false
|false| 0030| 6728| 1| 236.0| 69.0| 91.0| 154.0| 115.0| 39.0| 0| false
|false| 0030| 6728| 1| 260.0| 24.0| 47.0| 133.0| 101.0| 32.0| 0| false
|false| 0030| 6728| 1| 281.0| 39.0| 44.0| 620.0| 465.0| 155.0| 0| false
|false| 0030| 6728| 1| 293.0| 46.0| 27.0| 89.0| 58.0| 31.0| 1| false
|false| 0030| 6728| 1| 415.0| 237.0| 61.0| 277.0| 252.0| 25.0| 0| false
|false| 0030| 6728| 1| 1149.0| 1358.0| 1378.0| 811.0| 0.0| 0.0| 0| false
最后一栏是我想预测的那一栏。
我使用StringIndexer作为boolean,cprom和ccoup列。
我尝试过GBTClassifier,RandomForestClassifier,LinearRegression和其他我不记得但结果永远不对。
我将0.7,0.3的数据拆分为测试算法,就像你在例子中一直看到的那样。通常测试数据有大约8000条记录,其中2000条记录的流失布尔值为true。 训练数据大约有20k条记录,其中4000条记录的布尔值为真。
结果是:
我没有列churncpt功能。
所有记录的预测均为假。根据使用的分类器,我可能有1到10个预测为真。这显然是错误的。
列churncpt是该功能的一部分。
请注意,当布尔流失为真时,churncpt列不为0,但反过来情况并非总是如此。
这里的预测根本不是一个预测,如果churncpt>,则流失布尔值为真。 0同样不对。
我有一种感觉,我的训练数据(在一列旁边)完全被忽略或无用,并且有一列将事情搞砸了,在我的数据上使用if语句设置布尔值会更快。< / p>
我还在每个分类器上尝试了几个参数无济于事。我在我的功能上尝试过ChiSqSelector来修剪它们,但它也没有帮助。
我很乐意对预测布尔值有所了解。
非常感谢你的帮助。