最佳功能DNNClassifier模型

时间:2018-06-06 12:24:13

标签: tensor tensorflow-estimator

我正在使用50个功能进行二进制分类,我使用的是tf.estimator.DNNClassifier。如何对影响结果的顶级特征进行排名?

model = tf.estimator.DNNClassifier(feature_columns=feat_cols, hidden_units=[1024, 512, 256])
model.train(input_fn=input_func,steps=5000)

试图使用以下内容:

wt_names = model.get_variable_names()
wt_vals = [model.get_variable_value(name) for name in wt_names]

wt_names:

['dnn/hiddenlayer_0/bias',
 'dnn/hiddenlayer_0/bias/t_0/Adagrad',
 'dnn/hiddenlayer_0/kernel',
 'dnn/hiddenlayer_0/kernel/t_0/Adagrad',
 'dnn/hiddenlayer_1/bias',
....

wt_values:

model.get_variable_value('dnn/hiddenlayer_0/kernel')
array([[-0.05203109, -0.08008841, -0.07939883, ...,  0.00460025,
        -0.08133098, -0.00713339],
       [ 0.06286905,  0.01680468,  0.13167404, ..., -0.06170678,
        -0.06767021,  0.05019882],
       [ 0.07433462, -0.01052287, -0.10441218, ..., -0.081627  ,
        -0.06397511, -0.03532334],
       ...,

不确定如何确定哪些功能排名较高。

2 个答案:

答案 0 :(得分:1)

查看以下功能选择链接: https://machinelearningmastery.com/feature-selection-machine-learning-python/

给你四种方法来解决这个问题:单变量选择,递归特征消除,主成分分析和特征重要性。

答案 1 :(得分:0)

一些研究告诉我,您无法确定哪个功能对DNN影响最大。在你到达DNN之前,你需要这样做。

您可以使用Scikit来减少功能: [http://scikit-learn.org/stable/modules/feature_selection.html]

您可以使用"删除低差异的功能","递归功能消除"和其他人减少功能