我正在用 scikit-learn 试验随机森林,我的训练集得到了很好的结果,但我的测试集的结果相对较差......
这是我试图解决的问题(灵感来自扑克):给定玩家 A 的底牌、玩家 B 的底牌和翻牌(3 张牌),哪个玩家的手牌最好?从数学上讲,这是 14 个输入(7 张牌——一个等级和一个花色)和一个输出(0 或 1)。
以下是我到目前为止的一些结果:
Training set size: 600k, test set size: 120k, number of trees: 25
Success rate in training set: 99.975%
Success rate in testing set: 90.05%
Training set size: 400k, test set size: 80k, number of trees: 100
Success rate in training set: 100%
Success rate in testing set: 89.7%
Training set size: 600k, test set size: 120k, number of trees: 5
Success rate in training set: 98.685%
Success rate in testing set: 85.69%
以下是使用的相关代码:
from sklearn.ensemble import RandomForestClassifier
Forest = RandomForestClassifier(n_estimators = 25) #n_estimator varies
Forest = Forest.fit(inputs[:trainingSetSize],outputs[:trainingSetSize])
trainingOutputs = Forest.predict(inputs[:trainingSetSize])
testOutputs = Forest.predict(inputs[trainingSetSize:])
似乎无论使用多少树,训练集的性能都比测试集好得多,尽管训练集相对较大且特征数量相当少......