先从调用开始
ASEvaluation evaluator = new CfsSubsetEval(); //选择算法
ASSearch search = new BestFirst();//搜索算法
AttributeSelection as = new AttributeSelection();
as.setEvaluator(evaluator);//设置评价算法(选择算法)
as.setSearch(search);//设置搜索算法
as.SelectAttributes(dataSet);//调用search
numOfNewAttributes = as.numberAttributesSelected();//结果数据
selectedAttributes = as.selectedAttributes();//结果数据
以上是调用的主要代码,主要关注
as.SelectAttributes(dataSet);//调用search
进入SelectAttributes 605行
// Do the search
attributeSet = m_searchMethod.search(m_ASEvaluator,
m_trainInstances);
看到了吗?“Do the search”这就执行了。先说参数,一会儿说方法。在596行对m_ASEvaluator进行了初始化。根据调用部分可知,程序中定义的是CfsSubsetEval。所以进入CfsSubsetEval,算法详细信息
Correlation-based Feature Subset Selection for Machine Learning. Hamilton, New Zealand.
上面的文章来源于注释。
在CfsSubsetEval的326行,可以看到代码
public void buildEvaluator (Instances data)
接下来的事情,就交给算法本身了。接下来说search方法。同理,使用到了BestFirst搜索算法,是的去该类中找对应的search吧。
public int[] search (ASEvaluation ASEval, Instances data)
进入BestFirst,在668行看到了search方法的具体实现。接下来还是交给算法本身。
对于BestFirst算法请看向这里》》》http://blog.csdn.net/aalbertini/article/details/6292060