weka之ZeroR

来源:互联网 发布:淘宝的产品介绍怎么写 编辑:程序博客网 时间:2024/06/05 06:48

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

原创粉丝点击