我有一个纯粹的分类数据集,类权重非常不平衡(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
。
答案 0 :(得分:2)
在不了解您的潜在问题的情况下,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)]