我有一个纯分类数据集,具有非常不平衡的类权重(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.RandomForestClassifier
和sklearn.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)]