运行不了,程序错误,可能是kmeans.setDistanceFunction(distF);

abstract 发布于 2016/10/21 11:25
阅读 79
收藏 0

@abstract 你好,想跟你请教个问题:

package driftingDetection;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;


import moa.classifiers.bayes.NaiveBayes;
import moa.classifiers.core.driftdetection.CusumDM;
import moa.classifiers.lazy.neighboursearch.EuclideanDistance;
import weka.clusterers.SimpleKMeans;
import weka.core.DistanceFunction;
import weka.core.Instance;
import weka.core.converters.ArffLoader;


//import com.yahoo.labs.samoa.instances.ArffLoader;不使用这个
/* 
 * 
 */
import com.yahoo.labs.samoa.instances.Instances;
public class Text2 {
/*
* 这个方法(WEKADemo)完成建立KMean算法模型
* 输入为args
* args,String类型,为长度为4的一维数组,其中
* args【0】为读取训练集的路径(绝对路径)
* args【1】为簇数,(建议直接从文件中获得)
* args【2】为最大迭代数(根据具体情况需要,一般设置的比较大(10000以上)),可以升级为自选迭代次数
* args【3】为每次读取文件的长度,可以升级为自学习长度,或者用户选择,(具体的选择功能可以挑出几组最佳长度+自定义长度)
*/
public static void WEKADemo(String args[]) throws Exception{
/*****read training instances given the source file读取训练文件*******/
String trainFile = args[0];  //读取训练文件路径
File trainfile = new File(trainFile); //得到训练文件
ArffLoader loaderTrain = new ArffLoader();  //准备装载训练文件
loaderTrain.setFile(trainfile); //装载训练文件
weka.core.Instances trainInsts = loaderTrain.getDataSet(); //读入数据集
trainInsts.setClassIndex(trainInsts.numAttributes()-1); //设置训练的属性列
int numClusters=Integer.parseInt(args[1]);  //读入簇数
int maxlterations=Integer.parseInt(args[2]); //最大迭代次数
int seed=Integer.parseInt(args[3]); //长度“指针”,为每次读取的长度
SimpleKMeans kmeans=new SimpleKMeans(); //初始化朴素KMeans模型
kmeans.setNumClusters(numClusters);  //设置簇数
kmeans.setMaxIterations(maxlterations); //设置最大迭代数
kmeans.setSeed(seed);  //设置每次读取的长度
EuclideanDistance distF=new EuclideanDistance(); //初始化欧几里得步长
    kmeans.setDistanceFunction(distF);//这里有错
kmeans.buildClusterer(trainInsts);             //完成建立模型
  }

加载中
返回顶部
顶部