排列对物理学的重要性

PermutationImportancePhysics的Python项目详细描述


置换重要物理

这个包有助于计算基于给定度量的给定模型的特征排列重要性,以度量性能。其思想是在给定性能指标的基础上评估trained model的性能,前提是一个输入特征被拿走(特征值在样本之间洗牌)。

结果通常比由增强决策树提供的^ {EM1}$特征重要性更有意义,可以被用于其他模型,如神经网络,提供不确定性度量,并允许更灵活地选择评估度量和测试数据集。与iterative removation方法相比,计算速度更快,因为没有重新训练。

此包处理“示例权重”、自定义性能度量,并提供一些预定义的基于高能物理的度量。它可用于评估给定数据集上的特征重要性,该数据集不一定来自与训练集相同的分布,因此可以为新的测试数据集和/或评估度量重新计算训练模型的特征重要性。这可能有助于测试对系统位移(域适应)的敏感性,或仅测试数据集特定子集的特征的影响(具有1个喷射、2个喷射的样本、得分大于0.6的样本、质量为700 gev、800 gev的信号等)。它还可以处理多个输入矩阵,只要它们以列表的形式组合在一起(例如,如果您的计算度量要求系统化向上、系统化向下的数据集)。

WARNING: Choosing the right metric is essential to get meaningful results. Make sure to check if the value of PI for your given features makes sense. If 'discovery significance' is your metric (which usually ranges between 0 and 6), a permutation importance of 112 for a particular feature should worry you.

当有疑问时,使用“AUC”作为分类问题的合理度量,而不是“准确性”。

WARNING: With random forrests or DNN with dropouts, the PI for 2 correlated features might be 0 because dropping any one individually does not hamper the performance of the model, however dropping both might decrease performance. In this package the PI is calculated by dropping only 1 feature at a time for now. Future versions might provide an option to calculate PI taking into account correlations, if there is demonstrated interest.

快速教程

pip install PermutationImportancePhysics

Python3

from permutationimportancephysics.PermutationImportance import PermulationImportance
pi = PermulationImportance(model=bdt, X=X_test,y=y_test,weights=weights_test,n_iterations=3,usePredict_poba=True,
                      scoreFunction="AUC")
pi.dislayResults()

或发现意义

pi = PermulationImportance(model=bdt, X=X_test,y=y_test,weights=weights_test,n_iterations=3,usePredict_poba=True,
                       scoreFunction="amsasimov")
pi.dislayResults()

带误差条的绘图功能重要性

plt = pi.plotBars()
plt.show()

n_iterations(default=3):新洗牌后计算特征排列重要性的次数。越高=>;不确定度越小,计算时间越长。 usePredict_poba(default=False):使用model.predict_proba()而不是model.predict(),这对于sklearn模型很有用。 scoreFunction(default='AUC'):用于计算整个计算数据集上排列重要性的计算度量。用户定义函数的形式可能是:func (X_eval, y_true, weights)

依赖关系:

  • 努比
  • matplotlib
  • sklearn

待办事项:

  • 多处理
  • 负重处理的AUC
  • 添加更多物理度量(系统学意义,干扰)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何设置将在类声明中使用的输入参数?   混合表达式和文本的java SpEL模板   getHeaders()无法返回java Mockito测试SimpMessageHeaderAccessor getHeaders()应返回MessageHeaders   如何在java中创建循环回菜单的方法   具有多态性的Java列表问题   java Guice多数据库自动切换   java服务器错误,状态代码:400,错误代码:100005,消息:您已超过组织的内存限制   静态mutator方法的Java命名约定   用于实例化另一个java文件的groovy java代码   javajavax。网ssl。SSLHandshakeException:握手期间远程主机关闭连接。重新启动服务器后,它工作正常,但会再次显示   java WebSphere+RAD+Taglib   REST客户端中出现java异常:找不到contenttype application/json的messagebodyreader   无参数setter的Java命名   java从数组中删除重复字符