目前,我应该分析一些数据(大约在下表)。我想根据数据得到一些预测值。所以,我搜索了数据分析的算法(在scikit-learn),但是我找不到我找到的算法。因为我想得到预测值为二进制(如0或1),但线性,SVN等算法预测值为整数(如平均值)。
[training - data]
age | gender | education | result
45 | 1 | 9 | Y
23 | 2 | 12 | Y
27 | 2 | 9 | N
31 | 1 | 11 | Y
45 | 1 | 9 | N
[predict - data]
age | gender | education | result
21 | 1 | 12 | ?
32 | 2 | 11 | ?
26 | 1 | 11 | ?
54 | 1 | 9 | ?
23 | 2 | 13 | ?
我只想得到预测值为Y或n。我搜索了scikit-learn(http://scikit-learn.org/stable/),但我不知道最好的算法。谁知道呢?谢谢!
sklearn在分类方面支持所有这些。
如果想法是建立一个可解释的模型,那么LogisticRegression可能是可行的方法。
它构建一个类型为:logit(Result) = b0+b1*age+b2*gender+b3*education
的模型。它为你估计b
系数,然后你可以这样解释:当年龄增加1时,保持其他一切固定,那么结果将增加exp(b1)
。
此外,还有一些统计测试可以测试它的健壮性。这是一个很酷的模型,在计量经济学中广泛使用,但它假设线性。例如,您的result
变量(不管它意味着什么)在老年时可能比年轻时增加得更多。所以,你可能想把你的年龄分组。此外,由于非线性,您可能希望对某些因素进行一次热编码。
一个更容易使用的模型,也是可解释的,是DecisionTree。请参阅链接以获取此类树的示例。
如果可解释性不是问题,SVM或最近邻或神经网络可能是可行的方法。通常,数据科学家使用嵌套交叉验证来尝试带有一堆参数的一堆模型。外部交叉验证测试一堆不同的模型,内部交叉验证测试超参数。
啊——忘了说了。关于决策树,您应该特别注意对max_depth
超参数进行微调(但也要对其他参数进行微调)。你也可以尝试一些套装。合奏是指你创建了很多模型,然后它们都对预测进行民主投票。它们通常会大大提高准确性。对于决策树,两个非常酷的组合是随机森林和梯度增强树。