机器学习与数据挖掘机器学习杂文

树模型中特征重要性是如何计算的

2019-08-20  本文已影响0人  yangy_fly

使用sklearn里决策树的包,以及iris的数据集,使用基尼系数作为切割点划分依据

屏幕快照 2019-08-22 下午2.11.34.png

f1 = 0.49*7 - 0.375*4 + 0.5*2 + 0.444*3 = 4.262
f2 = 0
f3 = 0.459*14 - 0.49*7 - 0.245*7 = 1.281
f4 = 0.245*7 - 0.444*3 + 0.375*4 - 0.5*2 = 0.883

from sklearn.tree import DecisionTreeClassifier

train_df = pd.DataFrame(
    [[1, 1, 1, 1, 0],
     [1, 1, 1, 2, 0],
     [2, 1, 1, 1, 1],
     [3, 2, 1, 1, 1],
     [3, 3, 2, 1, 1],
     [3, 3, 2, 2, 0],
     [2, 3, 2, 2, 1],
     [1, 2, 1, 1, 0],
     [1, 3, 2, 1, 1],
     [3, 2, 2, 1, 1],
     [1, 2, 2, 2, 1],
     [2, 2, 1, 2, 1],
     [2, 1, 2, 1, 1],
     [3, 2, 1, 2, 0],
    ], columns=['f1', 'f2', 'f3', 'f4', 'label'])

X, y = train_df[['f1', 'f2', 'f3', 'f4']].values, train_df['label']

clf = DecisionTreeClassifier(criterion='gini')
clf.fit(X,y)
print(clf.feature_importances_)

# 特征重要性
[0.66296296 0.         0.2        0.13703704]

对于boosting模型,则其特征重要性是每棵树单独特征重要性后的加权平均值

上一篇下一篇

猜你喜欢

热点阅读