Mun*_*ong 27 python machine-learning decision-tree random-forest scikit-learn
我正在使用python sklearn包中实现的RandomForestClassifier来构建二进制分类模型.以下是交叉验证的结果:
Fold 1 : Train: 164 Test: 40
Train Accuracy: 0.914634146341
Test Accuracy: 0.55
Fold 2 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.707317073171
Fold 3 : Train: 163 Test: 41
Train Accuracy: 0.889570552147
Test Accuracy: 0.585365853659
Fold 4 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.756097560976
Fold 5 : Train: 163 Test: 41
Train Accuracy: 0.883435582822
Test Accuracy: 0.512195121951
Run Code Online (Sandbox Code Playgroud)
我使用"价格"功能来预测"质量",这是一个序数值.在每个交叉验证中,有163个训练样例和41个测试示例.
显然,过度拟合发生在这里.那么sklearn提供的任何参数都可以用来克服这个问题吗?我在这里找到了一些参数,例如min_samples_split和min_sample_leaf,但我不太明白如何调整它们.
提前致谢!
Sim*_*mon 58
我同意@Falcon和数据集的大小.主要问题可能是数据集的小尺寸.如果可能的话,你可以做的最好的事情是获得更多的数据,越多的数据(通常)就越不可能过度拟合,因为随着数据集大小的增加,出现预测性的随机模式开始被淹没.
那就是说,我会看下面的参数:
注意做这项工作要科学.使用3个数据集,一个训练集,一个单独的"开发"数据集来调整您的参数,以及一个使用最佳参数测试最终模型的测试集.仅一次更改一个参数并评估结果.或者尝试使用sklearn gridsearch算法一次性搜索这些参数.