http://www.cnblogs.com/7899-89/p/3630193.html
构造分类器函数
@Override
public void buildClassifier(Instances instances) throws Exception
{
//判断算法能否处理种种类型的数据
getCapabilities().testWithFail(instances);
//删除目标属性带有缺失值的样本
instances=new Instances(instances);
instances.deleteWithMissingClass();
double sumOfWeights=0;
m_Class=instances.classAttribute();
m_ClassValue=0;
switch (instances.classAttribute().type())
{
case Attribute.NUMERIC:
m_Counts=null;
break;
case Attribute.NOMINAL:
m_Counts=new double[instances.numClasses()];
for(int i=0;i<m_Counts.length;i++)
{
m_Counts[i]=1;
}
sumOfWeights=instances.numClasses();
break;
default:
break;
}
Enumeration enumInst=instances.enumerateInstances();
while (enumInst.hasMoreElements())
{
Instance inst = (Instance) enumInst.nextElement();
if(!inst.classIsMissing())
{
if(instances.classAttribute().isNominal())
{
m_Counts[(int)inst.classValue()]+=inst.weight();
}
else
{
m_ClassValue+=inst.weight()*inst.classValue();
}
sumOfWeights+=inst.weight();
}
}
if(instances.classAttribute().isNumeric())
{
if(Utils.gr(sumOfWeights, 0))
{
m_ClassValue/=sumOfWeights;
}
}
else
{
m_ClassValue=Utils.maxIndex(m_Counts);
Utils.normalize(m_Counts, sumOfWeights);
}
}
源码解析(pdf文件)下载地址:
http://download.csdn.net/detail/kaikai_sk/9850105