我在这里的任务是找到一种方法来获取一个或多个最重要特征的建议值。通过更改功能的建议值,我希望分类结果也更改。
Snapshot of dataset
以下是我到目前为止尝试过的过程:
- 导入数据集(形状:1162 x 22)
- 构建一个简单的神经网络(2个隐藏层)
- 由于因变量只是0或1(分类问题),因此我对变量进行了热编码。所以它是[0,1]或[1,0]
- 分解为训练和测试数据后,我训练了我的NN模型,并获得了77.8%的准确性
- 要知道在确定0或1时哪个特征(最重要的21个)是最重要的,我使用随机森林分类器(scikit-learn)训练了数据,并获得了77.8%的准确性,然后使用“随机森林分类器提供的feature_importances _”。
- 结果,我发现一个名为“ a_L4”的功能在相对功能重要性方面排名最高。
- 特征'a_L4'的取值范围是0到360,因为它表示角度。在原始数据集中,“ a_L4”仅包含12个值,分别为[5、50、95、120、140、160、185、230、235、275、320、345]。
- 我通过为每种情况直接添加所有可能的12个值来增加原始数据集,从而给出了一个新的形状数据集(1162x12 x 22)。
- 我导入了增强数据集,并在先前训练过的NN模型上进行了测试。结果是失败。分类几乎没有变化,这意味着几乎没有“ 1”切换为“ 0”。
- 我的结论是,更改“ a_L4”的值不足以带来分类的变化。因此,我再次对第二个最重要的功能(在本例中为“ b_L7_p1”)进行了相同的操作。
- 因此,写出两个最重要特征可以具有的所有可能值,现在新数据集的形状变为(1162x12x6 x 22)。 “ b_L7_p1”仅允许具有6个不同的值,因此可以乘以6。
- 同样的结果是失败。
所以,我的问题是,在上述过程中我可能做错了什么?我是否需要继续搜索更重要的功能,并使用它们可能具有的所有可能值来扩充数据?但是由于这是一个繁琐的任务,需要手动完成多个过程,并且会导致数据集很大,所以我希望有一种方法可以构建基于推理的NN模型,该模型可以直接给出特定特征的建议值或功能。
我在这个研究领域还比较陌生,所以有人可以告诉我一些我应该搜索的关键词吗?我在Google上找不到有关此问题的任何作品或论文。
谢谢。