- 12
- 0
- 约 12页
- 2017-08-02 发布于河南
- 举报
Weka[22] REPTree 源代码分析
作者:Koala++/屈伟
如果你分析完了ID3,还想进一步学习,最好还是先学习REPTree,它没有牵扯到那么
多类,两个类完成了全部的工作,看起来比较清楚,J48虽然有很强的可扩展性,但是初看
起来还是有些费力,REPTree也是我卖算法时(为了买一台运算能力强一点的计算机,我也
不得不赚钱),顺便分析的,但因为我以前介绍过J48了,重复的东西不想再次介绍了,如
果有什么不明白的,就把我两篇写的结合起来看吧。
我们再次从buildClassifier开始。
Random random = new Random(m_Seed);
m_zeroR = null;
if (data.numAttributes() == 1) {
m_zeroR = new ZeroR();
m_zeroR.buildClassifier(data);
return;
}
如果就只有一个属性,也就是类别属性,就用 ZeroR 分类器学习,ZeroR 分类器返回训
练集中出现最多的类别值,已经讲过了 Weka 开发[15]。
// Randomize and stratify
data.randomize(random);
if (data.classAttribute().isNominal()) {
data.stratify(m_NumFolds);
}
randomize 就是把 data 中的数据重排一下,如果类别属性是离散值,那么用 stratify 函
数,stratify 意思是分层,现在把这个函数列出来:
public void stratify(int numFolds) {
if (classAttribute().isNominal()) {
// sort by class
int index = 1;
while (index numInstances()) {
Instance instance1 = instance(index - 1);
for (int j = index; j numInstances(); j++) {
Instance instance2 = instance(j);
if ((instance1.classValue() == instance2.classValue())
|| (instance1.classIsMissing() instance2
.classIsMissing())) {
swap(index, j);
index++;
}
}
index++;
}
stratStep(numFolds);
}
}
上面这两重循环,就是根据类别值进行冒泡。下面有调用了 stratStep 函数:
protected void stratStep(int numFolds) {
FastVector newVec = new FastVector(m_Instances.capacity());
int start = 0, j;
// create stratified batch
while (newVec.size() numInstances()) {
j = start;
while (j numInstances()) {
newVec.addElement(instance(j));
j = j + numFolds;
}
start++;
}
m_Instances = newVec;
}
这里我举一个例子说明:j=0 时,numFolds 为 10 时,newVec 加入的 instance 下标就为
0,10,20…。这样的好处就是我们把各种类别的样本类似平均分布了。
// Split data into training and pruning set
Instances train = null;
Instances prune = null;
if (!m_NoPruning) {
train = data.trainCV(m_NumFolds, 0, random);
prune = data.testCV(m_NumFolds, 0);
} else {
train = data;
}
关于 trainCV 这个就不讲了,就是 crossValidation 的第 0 个训练集作为这次的训练集(train)。
而作为剪枝的数据集 prune 为第 0 个测试集。
// Create array of sorted indices and weights
int[][] sortedIndices = new int[train.numAttributes()][0];
double[][] w
您可能关注的文档
- 2010年湖北咸宁市中考化学试题.doc
- 2010年吉林高考全国新课标卷化学试题.doc
- 2010年吉林省长春市高中毕业班第二次调研测试(英语).doc
- 2010年宽甸市初中毕业生学业考试 (2).doc
- 2010年六年级毕业调研考试.doc
- 2010年普通高等学校招生全国统一考试英语天津卷详解.doc
- 2010年四川省成都市高中统一招生考打印简稿.doc
- 2010年四川省巴中市高中阶段学校招生考试理综试题(无答案).doc
- 2010年咸宁中考化学.doc
- 2010年物理第一次质量预测模拟题.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)