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



我有一个纯分类数据集,具有非常不平衡的类权重(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的机器学习库,以及库中允许我提取上述输出的算法的建议。

I have try;Tensorflow线性回归器,scikit学习线性回归器;Graphlab增强了树木。增强树似乎最有前途,但如果可能的话,我想使用开源库。

提前感谢大家!

更新:

GradientBoostingClassifier由于类不平衡而产生0.999137901985分数。

在不太了解潜在问题的情况下,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)]

最新更新