【发布时间】:2017-05-22 01:49:55
【问题描述】:
我对随机森林的工作原理知之甚少。 通常在分类中,我可以将训练数据拟合到随机森林分类器中并要求预测测试数据。
目前我正在处理提供给我的巨量数据。这是数据集的顶部行,有 1300(大约)行。
survived pclass sex age sibsp parch fare embarked
0 1 1 female 29 0 0 211.3375 S
1 1 1 male 0.9167 1 2 151.55 S
2 0 1 female 2 1 2 151.55 S
3 0 1 male 30 1 2 151.55 S
4 0 1 female 25 1 2 151.55 S
5 1 1 male 48 0 0 26.55 S
6 1 1 female 63 1 0 77.9583 S
7 0 1 male 39 0 0 0 S
8 1 1 female 53 2 0 51.4792 S
9 0 1 male 71 0 0 49.5042 C
10 0 1 male 47 1 0 227.525 C
11 1 1 female 18 1 0 227.525 C
12 1 1 female 24 0 0 69.3 C
13 1 1 female 26 0 0 78.85 S
没有给出测试数据。所以我希望随机森林预测整个数据集的生存率并将其与实际值进行比较(更像是检查准确度分数)。
所以我所做的就是将我的完整数据集分成两部分;一个有特征,另一个预测(幸存)。 特征包含除幸存的所有列,预测包含幸存的列。
dfFeatures = df['survived']
dfTarget = dfCopy.drop('survived', 1)
注意:df 是整个数据集。
这是检查随机森林分数的代码
rfClf = RandomForestClassifier(n_estimators=100, max_features=10)
rfClf = rfClf.fit(dfFeatures, dfTarget)
scoreForRf = rfClf.score(dfFeatures, dfTarget)
我用这样的东西得到分数输出
The accuracy score for random forest is : 0.983193277311
我发现很难理解上面给定代码中的代码背后发生了什么。
它会根据其他特征 (dfFeatures) 预测所有元组的生存率,并将其与测试数据 (dfTarget) 进行比较并给出预测分数,还是它会根据训练随机创建训练和测试数据提供的数据并比较它后面生成的测试数据的准确性?
更准确地说,在计算准确度分数时,它是预测整个数据集还是随机部分数据集的生存率?
【问题讨论】:
-
如果您手动将数据集分为训练和测试,是的,它是预测训练集中的幸存列并尝试将其与测试集匹配,这就是您的准确度得分。
-
@Arman 如果我不分为训练集和测试集怎么办。不是在幕后随机生成测试集(67-23)吗?
-
我认为是的,关于描述测试集多少和训练集多少的参数,我不太确定,也许在那种情况下,准确度不是训练准确度得分测试准确度分数
-
@Cybercop 测试/训练拆分实际上是通过子集行而不是列来完成的!后者实际上称为
feature selection。我强烈建议阅读this 帖子中关于在同一数据集上使用随机森林的所有部分。 -
@Omid 是的,训练和测试拆分是在行而不是列上完成的。而且我也知道特征选择是为了分割树的一个节点。但这对我的问题有什么帮助?
标签: python machine-learning scikit-learn random-forest ensemble-learning