gpt4 book ai didi

java - Mallet 特征选择类似于将特征值设置为 0

转载 作者:行者123 更新时间:2023-11-30 09:13:24 26 4
gpt4 key购买 nike

我正在查看 Mallet 源代码,似乎大多数分类器实现(例如朴素贝叶斯)并没有真正考虑到功能选择,即使 InstanceList 类具有setFeatureSelection 方法。

现在我想对我的数据集进行一些快速实验,其中涉及特征选择。我在想,从技术快捷方式的角度来看,我可能会获得排名最低的特征,并将实例 vector 中的这些值设置为 0。这在机器学习中是否相当于分类器训练中的特征选择,而根本不考虑它们(如果不涉及平滑,例如拉普拉斯估计)?

谢谢

最佳答案

是的,将特征值设置为零与将其从特征向量中删除具有相同的效果,因为 MALLET 没有“缺失特征”的概念,只有零和非零特征值。

不过,使用 FeatureSelection 类并不太痛苦。 MALLET 附带了几个内置类,这些类在幕后应用基于 RankedFeatureVector 子类的“掩码”。例如,要使用信息增益特征选择,您应该能够执行以下操作:

FeatureSelection fs = FeatureSelection(new InfoGain(ilist), numFeatures);
ilist.setFeatureSelection(fs);

您还可以实现自己的 RankedFeatureVector 子类 ( the API is here ) 以获得更多自定义功能。要以其他方式手动选择功能,您仍然可以通过创建一个功能掩码作为 BitSet 来实现,其中包含您要使用的所有功能 ID(来自字母表),例如:

java.util.BitSet featureMask = /* some code to pick your features */;
FeatureSelection fs = FeatureSelection(ilist.getAlphabet(), featureMask);
ilist.setFeatureSelection(fs);

一般来说,我建议使用 FeatureSelection 对象,而不是破坏性地更改实例数据。

关于java - Mallet 特征选择类似于将特征值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19176473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com