<pre name="code" class="java">private void handleNumericAttribute(Instances trainInstances)
<span style="white-space:pre"> </span>throws Exception {
int firstMiss;//最后一个有效instance的下标
int next = 1;//下一个instance的index
int last = 0;//当前instance的index
int splitIndex = -1;//分裂点
double currentInfoGain;//当前信息增益
double defaultEnt;//分割之前的信息熵
double minSplit;
Instance instance;
int i;
//首先新建一个分布,数值型默认处理为2维分布,也就可以理解为小于某个值放到一个Bag里,其余的放到另外一个Bag里
m_distribution = new Distribution(2,trainInstances.numClasses());
Enumeration enu = trainInstances.enumerateInstances();
i = 0;
//注意instances传入的时候是排好序的,这个排序保证了missingValue放在最后面,所以读到了missingValue其之后肯定都是miss//ingValue,换言之,firstMiss在循环之后代表了最后一个有效的instance的下标。
while (enu.hasMoreElements()) {
<span style="white-space:pre"> </spa
weka中的J48
最新推荐文章于 2019-05-25 17:00:23 发布
这段代码展示了Weka中J48决策树算法如何处理数值型属性。它首先创建一个分布来存储实例,然后遍历已排序的实例,将非缺失值的实例分配到分布的其中一个袋中。接着,它寻找最优的分裂点,通过比较信息增益来确定最佳划分。如果找不到满足最小样本数的分裂点,则不进行划分。最后,根据分裂点更新分布并计算信息增益和增益率。
摘要由CSDN通过智能技术生成