首页 文章

如何从sci-kit学习解释随机森林分类器?

提问于
浏览
2

我对随机森林的运作方式知之甚少 . 通常在分类中,我可以将列车数据拟合到随机森林分类器中并要求预测测试数据 .

目前我正在研究提供给我的巨大数据 . 这是数据集的顶行,有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是整个数据集 .

这是检查randomforest得分的代码

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 )进行比较并给出预测分数,或者根据提供的列车数据随机创建列车和测试数据,并比较测试的准确性它后面生成的数据?

更准确地说,在计算准确度分数时,它是否预测整个数据集或随机部分数据集的存活率?

1 回答

  • 2

    不知何故,我没有看到你试图将数据集拆分为火车和测试

    dfWithTestFeature = df['survived']
    

    dfWithTestFeature仅包含幸存列,即标签 .

    dfWithTrainFeatures = dfCopy.drop('survived', 1)
    

    dfWithTrainFeatures包含所有功能(pclass,性别,年龄等) .

    现在跳到代码,

    rfClf = RandomForestClassifier(n_estimators=100, max_features=10)
    

    上面的行是创建随机森林分类器,n_estimator是树的深度,更高的数量会导致数据过度拟合 .

    rfClf = rfClf.fit(dfWithTrainFeatures, dfWithTestFeature)
    

    上面的行是训练过程, .fit() 需要2个参数,第一个是特征,第二个是特征的标签(或目标值,即'survived'列的值) .

    scoreForRf = rfClf.score(dfWithTrainFeatures, dfWithTestFeature)
    

    .score() 需要2个参数,第一个是功能,第二个是标签 . 这是为了使用我们使用 .fit() 函数创建的模型来预测第一个参数中的要素,而第二个参数将是验证值 .

    从我所看到的,你使用相同的数据来训练和测试不好的模型 .

    更准确地说,在计算准确度分数时,它是否预测整个数据集或随机部分数据集的存活率?

    您使用所有数据来测试模型 .

    我可以使用交叉验证,然后再次问题是我必须为随机森林?对随机森林的交叉验证似乎也很慢

    当然,您需要使用验证来测试您的模型 . 创建混淆矩阵,计算精度和召回率,不仅仅取决于准确性 .

    如果您认为模型运行速度太慢,则减少n_esimators值 .

相关问题