weka中的J48

这段代码展示了Weka中J48决策树算法如何处理数值型属性。它首先创建一个分布来存储实例,然后遍历已排序的实例,将非缺失值的实例分配到分布的其中一个袋中。接着,它寻找最优的分裂点,通过比较信息增益来确定最佳划分。如果找不到满足最小样本数的分裂点,则不进行划分。最后,根据分裂点更新分布并计算信息增益和增益率。
摘要由CSDN通过智能技术生成
<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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值