目前,我应该分析一些数据(关于下表)。我想根据数据得到一些预测值。所以,我搜索数据分析的算法(在scikit-learn中),但我找不到我发现的算法。因为我想将预测值作为二进制(例如0或1),但线性,SVN等算法将值预测为整数(如平均值)。下表更详细解释。
[训练 - 数据]
age | gender | education | result
45 | 1 | 9 | Y
23 | 2 | 12 | Y
27 | 2 | 9 | N
31 | 1 | 11 | Y
45 | 1 | 9 | N
[预测 - 数据]
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/),但我不知道最好的算法。 谁知道呢?谢谢!
答案 0 :(得分:4)
sklearn在分类方面支持all of these。
如果想要构建一个可解释的模型,那么LogisticRegression可能是最佳选择。
它构建了一个类型的模型:logit(Result) = b0+b1*age+b2*gender+b3*education
。它会为您估算b
系数,然后您可以将其解释为:当年龄增加1时,保持其他所有内容固定,结果将增加exp(b1)
。查看更多here。
此外,还有一系列统计测试可用于测试它的稳健性。它是一个非常酷的模型,广泛用于计量经济学,但它假设线性。例如,您的result
变量(无论它意味着什么)在老年时可能比年轻时增加更多。因此,您可能希望将年龄汇总到群组中。此外,由于非线性,您可能需要one-hot encoding一些因素。
易于使用的模型,也是可解释的,是DecisionTree。有关此类树木的示例,请参阅链接。
如果解释不是问题,那么SVM或类似nearest neighbors或neural network的方法可能就行了。通常,数据科学家使用nested cross-validation来尝试一堆带有一堆参数的模型。外部交叉验证测试了一系列不同的模型,内部交叉验证测试了超参数。
啊 - 忘了提。关于决策树,您应该特别注意微调max_depth
超参数(但也要微调其他参数)。你也可以尝试一些合奏。合奏是指你创造了很多模型,然后他们都在预测中民主地投票。它们通常可以提高准确性。对于决策树,两个非常酷的合奏是RandomForest和Gradient Boosting Trees。
告诉我是否还有其他事情你要我澄清一下。无论如何,请告诉我们1.到目前为止您尝试过的内容,以及2.您想要做什么。分类是数据科学中巨大的领域。这是我对您提供的信息所能做的最好的事情。 :)