python - 了解哪些输入在神经元网络中具有最高权重
问题描述
我目前正在研究监督机器学习解决方案,将一些数据分为两类。到目前为止,我一直在研究 keras/tensorflow Python Scipt,它似乎可以很好地管理它:
input_dim = len(data.columns) - 1
print(input_dim)
model = Sequential()
model.add(Dense(8, input_dim=input_dim, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(train_x, train_y, validation_split=0.33, epochs=1500, batch_size=1000, verbose=1)
我使用的输入数据是具有 168 个输入特征的 csv 数据。当我第一次成功运行这个脚本时,我很惊讶地发现,仅仅经过几百个 epoch 的训练,我的准确率就超过了 99%。我什至都懒得规范化输入数据。
我现在想要找出的是,我的 168 个输入特征中的哪一个能够带来如此高的准确率,而哪些特征在训练时不会产生太大影响。
有没有办法检查每个输入列的权重,以查看其中哪些被使用得最多,分别产生最大的影响。
解决方案
回答你的最后一个问题:
model.layers[0].get_weights()
但是,除非有明显的主导权重,否则单个样本不太可能为您提供良好的准确性。对于特征选择,尝试用它们的平均值替换输入的一些特征,并检查预测如何波动。几乎没有波动意味着该特征并不重要。
推荐阅读
- javascript - 为 Chrome 扩展创建另一个完整页面(React+Typescript)
- laravel - 日期时间的 Laravel 类型提示
- java - Mockito 中的错误存根
- python - 替换括号外的所有单引号以解析为有效的 json
- wordpress - 视频和手风琴等某些元素不起作用
- javascript - React Native Expo-Camera 录制视频发现问题用户拒绝需要音频权限
- python - facebook广告api的python字符串字典
- python - 给定 A = S*D*ST (D 是对角矩阵,S/ST 是任意 nxn 矩阵) A 的特征值不应该对应于 D 的对角线条目吗?
- c# - 我怎样才能让我的角色立足于unity3d
- python - 我似乎无法从网络上抓取 href 或文本