什么机器学习算法训练使用特征权重作为决策树的输出?

时间:2016-11-02 19:59:35

标签: python machine-learning scikit-learn gradient-descent

我有一个纯粹的分类数据集,类权重非常不平衡(1:99)。

我想训练一个模型,该模型将计算所述特征的每个特征和值,它对预测的重要性。所以本质上是生成像对象一样的字典:

vocabulary = {
'user=12345': 0,
'user=67890': 1,
'age=30': 2,
'age=40': 3,
'geo=UK': 4,
'geo=DE': 5,
'geo=US': 6,
'geo=BR': 7}

然后重视这个重要性:

weights = [.1, .2, .15, .25, .1, .1, .2, .2]

我应该使用哪种基于python的机器学习库,以及库中允许我提取上述输出的算法的推荐。

我试过了; tensorflow线性回归量,scikit学习线性回归量& graphlab提升了树木。增强树似乎最有希望,但我想尽可能使用开源库。

非常感谢大家!

更新

由于课程不平衡,

GradientBoostingClassifier得分为0.999137901985

1 个答案:

答案 0 :(得分:2)

在不了解您的潜在问题的情况下,sklearn.ensemble.RandomForestClassifiersklearn.ensemble.GradientBoostingClassifier会生成要素重要性,并且可能很容易用于大多数用途。以下是Iris样本数据的简单示例:

In [79]: from sklearn.datasets import load_iris

In [80]: from sklearn.ensemble import GradientBoostingClassifier

In [81]: gbm.fit(load_iris()["data"], load_iris()["target"])
Out[81]:
GradientBoostingClassifier(init=None, learning_rate=0.1, loss='deviance',
              max_depth=3, max_features=None, max_leaf_nodes=None,
              min_samples_leaf=1, min_samples_split=2,
              min_weight_fraction_leaf=0.0, n_estimators=100,
              presort='auto', random_state=None, subsample=1.0, verbose=0,
              warm_start=False)

In [82]: zip(load_iris()["feature_names"], gbm.feature_importances_)
Out[82]:
[('sepal length (cm)', 0.072135639528234),
 ('sepal width (cm)', 0.10858443031280439),
 ('petal length (cm)', 0.31074531613629014),
 ('petal width (cm)', 0.43520128068933822)]