获取数据框字典的功能重要性

时间:2019-01-17 10:09:17

标签: python-3.x dictionary dataframe machine-learning random-forest

我目前正在使用RandomForestRegressor处理一个用例。为了基于一列分别获得训练和测试数据,比方说Home,数据框被拆分为字典。几乎完成了建模,但是卡在字典中每个键的功能重要性上(键数= 21)。请查看以下代码:

hp = pd.get_dummies(hp)
hp = {i: g for i, g in hp.set_index(["Home"]).groupby(level = [0])}

feature = {}; feature_train = {}; feature_test = {}
target = {}; target_train = {}; target_test = {}; target_pred = {}
importances = {}

for k, v in hp.items():
    target[k] = np.array(v["HP"])
    feature[k] = v.drop(["HP", "Corr"], axis = 1)

feature_list = list(feature[1].columns)

for k, v in zip(feature, target):
    feature[k] = np.array(feature[v])
for k, v in zip(feature_train, target_train):
    feature_train[k], feature_test[k], target_train[k], target_test[k] = train_test_split(
            feature[v], target[v], test_size = 0.25, random_state = 42)

Random Forest Feature Importance Chart using Python的帮助下我尝试过的事情

for name, importance in zip(feature_list, list(rf.feature_importances_)):
    print(name, "=", importance)

但是这仅显示其中一本字典的重要性(我不知道哪本字典)。我想要的是将它打印成字典“重要性”中所有键的内容。预先感谢!

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,那么您希望功能对于训练和测试数据的重要性。

这不是它的工作方式,首先它会从您的训练数据中创建RandomForest,然后执行该操作后,它可以根据分割空间的次数(以及“好”的程度)来计算每个功能的重要性'是裂痕,例如,对于许多树木,基尼杂质的低低程度。

因此,您可以获得功能对于训练数据的重要性,对于测试数据,则使用学习的树体系结构来预测值。