我正在使用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],
...,
不确定如何确定哪些功能排名较高。
答案 0 :(得分:1)
查看以下功能选择链接: https://machinelearningmastery.com/feature-selection-machine-learning-python/
给你四种方法来解决这个问题:单变量选择,递归特征消除,主成分分析和特征重要性。
答案 1 :(得分:0)
一些研究告诉我,您无法确定哪个功能对DNN影响最大。在你到达DNN之前,你需要这样做。
您可以使用Scikit来减少功能: [http://scikit-learn.org/stable/modules/feature_selection.html]
您可以使用"删除低差异的功能","递归功能消除"和其他人减少功能