weka: exhaustive search
窮舉搜索。
假設10個屬性, 需要找出2^^10 種可能情形中, 那種的merit最優。
每次直接根據迭代次數space產生屬性集
?
code:
//best_group 初始為空//best_merit初始為空best_group的merit//假設有10個屬性, 那么需要搜索 2^^10 - 1 = 1023 次BigInteger searchSpaceEnd = BigInteger.ONE.add(BigInteger.ONE).pow(numatts).subtract(BigInteger.ONE);while (!done) {// the next subsetspace = space.add(BigInteger.ONE);if (space.equals(searchSpaceEnd)) {done = true;}//每次都是從迭代次數取得屬性集, 不需要用另外的內存空間tempGroup.clear();for (int i = 0; i < numatts; i++) {if (space.testBit(i)) {if (!m_hasClass) {tempGroup.set(i);} else {int j = (i >= m_classIndex)? i + 1: i;tempGroup.set(j);}}}tempMerit = ASEvaluator.evaluateSubset(tempGroup);m_evaluations++;if (tempMerit >= best_merit) {tempSize = countFeatures(tempGroup);if (tempMerit > best_merit || //這里是或???. 確實是或, 邏輯真晦澀。 //改成 if((tempMerit > best_merit) ||((tempMerit == best_merit) && (tempSize < sizeOfBest)) )更好點(tempSize < sizeOfBest)) {best_merit = tempMerit;m_bestGroup = (BitSet)(tempGroup.clone());sizeOfBest = tempSize;}}}m_bestMerit = best_merit;return attributeList(m_bestGroup);
總結
以上是生活随笔為你收集整理的weka: exhaustive search的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: weka: backwards with
- 下一篇: weka: FCBFSearch