【问题标题】:How to see the features used in random forest?如何查看随机森林中使用的特征?
【发布时间】:2020-08-08 15:51:21
【问题描述】:

目前,我正在研究随机森林进行分类。我在显示模型中使用的功能时遇到问题。

这是我的一些代码

model=RandomForestClassifier(n_estimators=estimator, max_depth=depth, max_features=feature)# a simple random forest model
model.fit(train_X,train_y)# now fit our model for training data
prediction=model.predict(test_X)

我使用超参数作为模型参数,尤其是 max_features。输入可以是 3、5 和无(使用所有功能)。

这是我的特点:

A1_feat A2_feat A3_feat A4_feat A5_feat A6_feat A7_feat A8_feat B_feat C_feat

类或标签的状态

例如,我使用了 5 个功能。那么我想知道正在使用哪些功能?

输出应该是A1_feat, A3_feat, A5_feat, B_feat, and C_feat

【问题讨论】:

    标签: machine-learning random-forest feature-extraction feature-detection


    【解决方案1】:

    您可以使用分类器的feature_importances_ 属性。

    例如:

    from pandas import DataFrame
    
    feature_importances = DataFrame(model.feature_importances_,
                                    index = train_X.columns,
                                    columns=['importance'])
                                    .sort_values('importance', 
                                                 ascending=False)
    
    print(feature_importances)
    

    在我的例子中,输出是:

    Feature Importance
    
           importance
    sc       0.158446
    al       0.143696
    pcv      0.142879
    rbcc     0.137623
    sg       0.085623
    .
    .
    

    另外,您可以绘制:

    from matplotlib.pyplot import figure
    from matplotlib.pyplot import title
    
    
    figure(figsize=(12,3))
    features = test_X.columns.values.tolist()
    importance = model.feature_importances_.tolist()
    feature_series = Series(data=importance, index=features)
    feature_series.plot.bar()
    title('Feature Importance')
    

    在我的例子中,图表是:

    【讨论】:

    • 我认为那不是我想要的。但是谢谢你的回答,也许我以后会需要那个
    • 嗯,也许我误解了你的问题。您想知道随机森林正在使用哪些功能?如果我是对的,那么您可以使用您的分类器“feature_importances_”属性。为什么?如果列出的功能为 0,则根本不使用您的功能。如果它不为零,那么你就知道该特征对分类有影响
    • 还是不行..模型已经由所有特征建立,所以列出的特征将非零..因为我所有的特征都很重要,或者至少对模型..我想要的是使用一些功能,然后我可以看到选择了哪些功能..谢谢你的回答顺便说一句
    • 嗯,我明白了,但你问的问题是哪些特征对我的分类器有影响?现在你问的是如何使用其中的一些功能? 这是两个不同的问题。您希望根据最大影响选择功能。我建议这个link,如果你仍然有问题,那么你应该创建一个带有feature-selection 标签的新问题。
    猜你喜欢
    • 2020-05-16
    • 2015-09-28
    • 2021-05-09
    • 2014-04-17
    • 1970-01-01
    • 2017-07-19
    • 2021-08-29
    • 2016-04-09
    • 2018-12-01
    相关资源
    最近更新 更多