类weka.core.Randomizable源码实例Demo

下面列出了怎么用weka.core.Randomizable的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: tsml   文件: ClassifierResults.java
public void setNonResourceDetails(final Classifier classifier, final Instances data) {
    setDatasetName(data.relationName());
    if(classifier instanceof EnhancedAbstractClassifier) {
        setClassifierName(((EnhancedAbstractClassifier) classifier).getClassifierName());
        setFoldID(((EnhancedAbstractClassifier) classifier).getSeed());
    } else {
        setClassifierName(classifier.getClass().getSimpleName());
    }
    if(classifier instanceof Randomizable) {
        setFoldID(((Randomizable) classifier).getSeed());
    }
    if(classifier instanceof OptionHandler) {
        setParas(StrUtils.join(",", ((OptionHandler) classifier).getOptions()));
    }
    setOs(SysUtils.getOsName());
    setCpuInfo(SysUtils.findCpuInfo());
}
 
源代码2 项目: meka   文件: BaggingMLdup.java
@Override
public void buildClassifier(Instances train) throws Exception {
  	testCapabilities(train);
  	
	if (getDebug()) System.out.print("-: Models: ");

	//m_Classifiers = (MultilabelClassifier[]) AbstractClassifier.makeCopies(m_Classifier, m_NumIterations);
	m_Classifiers = ProblemTransformationMethod.makeCopies((ProblemTransformationMethod) m_Classifier, m_NumIterations);

	for(int i = 0; i < m_NumIterations; i++) {
		Random r = new Random(m_Seed+i);
		Instances bag = new Instances(train,0);
		if (m_Classifiers[i] instanceof Randomizable) ((Randomizable)m_Classifiers[i]).setSeed(m_Seed+i);
		if(getDebug()) System.out.print(""+i+" ");

		int bag_no = (m_BagSizePercent*train.numInstances()/100);
		//System.out.println(" bag no: "+bag_no);
		while(bag.numInstances() < bag_no) {
			bag.add(train.instance(r.nextInt(train.numInstances())));
		}
		m_Classifiers[i].buildClassifier(bag);
	}
	if (getDebug()) System.out.println(":-");
}
 
源代码3 项目: meka   文件: FilteredClassifier.java
/**
 * Build the classifier on the filtered data.
 *
 * @param data the training data
 * @throws Exception if the classifier could not be built successfully
 */
public void buildClassifier(Instances data) throws Exception {

  if (m_Classifier == null) {
    throw new Exception("No base classifier has been set!");
  }

  getCapabilities().testWithFail(data);

  Random r = (data.numInstances() > 0) ? data.getRandomNumberGenerator(getSeed()) : new Random(getSeed());
  data = setUp(data, r);
  if (!data.allInstanceWeightsIdentical() && !(m_Classifier instanceof WeightedInstancesHandler)) {
    data = data.resampleWithWeights(r); // The filter may have assigned weights.
  }
  if (!data.allAttributeWeightsIdentical() && !(m_Classifier instanceof WeightedAttributesHandler)) {
    data = resampleAttributes(data, false, r);
  }

  if (m_Classifier instanceof Randomizable) {
    ((Randomizable)m_Classifier).setSeed(r.nextInt());
  }

  m_Classifier.buildClassifier(data);
}
 
源代码4 项目: meka   文件: RepeatedRuns.java
/**
 * Executes the runs in sequential order.
 *
 * @param classifier    the classifier to evaluate
 * @param dataset       the dataset to evaluate on
 * @return              the statistics
 */
protected List<EvaluationStatistics> evaluateSequential(MultiLabelClassifier classifier, Instances dataset) {
	List<EvaluationStatistics>  result;
	List<EvaluationStatistics>  stats;
	int                         i;

	result = new ArrayList<>();

	for (i = m_LowerRuns; i <= m_UpperRuns; i++) {
		log("Run: " + i);
		if (m_Evaluator instanceof Randomizable)
			((Randomizable) m_Evaluator).setSeed(i);
		m_Evaluator.initialize();
		stats = m_Evaluator.evaluate(classifier, dataset);
		if (stats != null) {
			for (EvaluationStatistics stat: stats) {
				stat.put(KEY_RUN, i);
				result.add(stat);
			}
		}
		if (m_Stopped)
			break;
	}

	return result;
}
 
源代码5 项目: tsml   文件: RandomCommittee.java
/**
   * Builds the committee of randomizable classifiers.
   *
   * @param data the training data to be used for generating the
   * bagged classifier.
   * @exception Exception if the classifier could not be built successfully
   */
  public void buildClassifier(Instances data) throws Exception {

    // can classifier handle the data?
    getCapabilities().testWithFail(data);

    // remove instances with missing class
    m_data = new Instances(data);
    m_data.deleteWithMissingClass();
    super.buildClassifier(m_data);
    
    if (!(m_Classifier instanceof Randomizable)) {
      throw new IllegalArgumentException("Base learner must implement Randomizable!");
    }

    m_Classifiers = AbstractClassifier.makeCopies(m_Classifier, m_NumIterations);

    Random random = m_data.getRandomNumberGenerator(m_Seed);

    // Resample data based on weights if base learner can't handle weights
    if (!(m_Classifier instanceof WeightedInstancesHandler)) {
      m_data = m_data.resampleWithWeights(random);
    }

    for (int j = 0; j < m_Classifiers.length; j++) {

      // Set the random number seed for the current classifier.
      ((Randomizable) m_Classifiers[j]).setSeed(random.nextInt());
      
      // Build the classifier.
//      m_Classifiers[j].buildClassifier(m_data);
    }
    
    buildClassifiers();
    
    // save memory
    m_data = null;
  }
 
源代码6 项目: tsml   文件: ClassifierLists.java
/**
 *
 * setClassifier, which takes the experimental
 * arguments themselves and therefore the classifiers can take from them whatever they
 * need, e.g the dataset name, the fold id, separate checkpoint paths, etc.
 *
 * To take this idea further, to be honest each of the TSC-specific classifiers
 * could/should have a constructor and/or factory that builds the classifier
 * from the experimental args.
 *
 * previous usage was setClassifier(String classifier name, int fold).
 * this can be reproduced with setClassifierClassic below.
 *
 */
public static Classifier setClassifier(Experiments.ExperimentalArguments exp){
    String classifier=exp.classifierName;
    Classifier c = null;
    if(distanceBased.contains(classifier))
        c=setDistanceBased(exp);
    else if(dictionaryBased.contains(classifier))
        c=setDictionaryBased(exp);
    else if(intervalBased.contains(classifier))
        c=setIntervalBased(exp);
    else if(frequencyBased.contains(classifier))
        c=setFrequencyBased(exp);
    else if(shapeletBased.contains(classifier))
        c=setShapeletBased(exp);
    else if(hybridBased.contains(classifier))
        c=setHybridBased(exp);
    else if(multivariateBased.contains(classifier))
        c=setMultivariate(exp);
    else if(standardClassifiers.contains(classifier))
        c=setStandardClassifiers(exp);
    else if(bespokeClassifiers.contains(classifier))
        c=setBespokeClassifiers(exp);
    else{
        System.out.println("Unknown classifier "+classifier+" it is not in any of the sublists ");
        throw new UnsupportedOperationException("Unknown classifier "+classifier+" it is not in any of the sublists on ClassifierLists ");
    }
    if(c instanceof Randomizable)
        ((Randomizable)c).setSeed(exp.foldId);
    return c;
}
 
源代码7 项目: tsml   文件: FlatCote.java
@Override
    public void buildClassifier(Instances train) throws Exception{

        long t1=System.nanoTime();
        this.train = train;
        
        ee = new ElasticEnsemble();
        ShapeletTransformClassifier stc = new ShapeletTransformClassifier();
        stc.setHourLimit(24);
        stc.setClassifier(new CAWPE());
//Redo for STC
        //ShapeletTransform shapeletTransform = ShapeletTransformFactory.createTransform(train);
        ShapeletFilter shapeletFilter = ShapeletTransformTimingUtilities.createTransformWithTimeLimit(train, 24); // now defaults to max of 24 hours
        shapeletFilter.supressOutput();
        st = new CAWPE();
        st.setTransform(shapeletFilter);
        st.setupOriginalHESCASettings();
        acf = new CAWPE();
        acf.setupOriginalHESCASettings();
        acf.setTransform(new ACF());
        ps = new CAWPE();
        ps.setupOriginalHESCASettings();
        ps.setTransform(new PowerSpectrum());

        if(seedClassifier){
            if(ee instanceof Randomizable)
                ((Randomizable)ee).setSeed(seed);
            if(st instanceof Randomizable)
                ((Randomizable)st).setSeed(seed);
            if(acf instanceof Randomizable)
                ((Randomizable)st).setSeed(seed);
            if(acf instanceof Randomizable)
                ((Randomizable)st).setSeed(seed);
            
        }
//        st.setDebugPrinting(true);
        ee.buildClassifier(train);
        acf.buildClassifier(train);
        ps.buildClassifier(train);
        st.buildClassifier(train);
        
        cvAccs = new double[4][];
        cvAccs[0] = ee.getCVAccs();
        cvAccs[1] = st.getIndividualAccEstimates();
        cvAccs[2] = acf.getIndividualAccEstimates();
        cvAccs[3] = ps.getIndividualAccEstimates();
        
        cvSum = 0;
        for(int e = 0; e < cvAccs.length;e++){
            for(int c = 0; c < cvAccs[e].length; c++){
                cvSum+=cvAccs[e][c];
            }
        }
        long t2=System.nanoTime();
        trainResults.setBuildTime(t2-t1);
        for(int i=0;i<cvAccs.length;i++)
            numClassifiers+=cvAccs[i].length;
    }
 
源代码8 项目: tsml   文件: RandomSubSpace.java
/**
  * builds the classifier.
  *
  * @param data 	the training data to be used for generating the
  * 			classifier.
  * @throws Exception 	if the classifier could not be built successfully
  */
 public void buildClassifier(Instances data) throws Exception {

   // can classifier handle the data?
   getCapabilities().testWithFail(data);

   // remove instances with missing class
   m_data = new Instances(data);
   m_data.deleteWithMissingClass();
   
   // only class? -> build ZeroR model
   if (m_data.numAttributes() == 1) {
     System.err.println(
  "Cannot build model (only class attribute present in data!), "
  + "using ZeroR model instead!");
     m_ZeroR = new weka.classifiers.rules.ZeroR();
     m_ZeroR.buildClassifier(m_data);
     return;
   }
   else {
     m_ZeroR = null;
   }
   
   super.buildClassifier(data);

   Integer[] indices = new Integer[data.numAttributes()-1];
   int classIndex = data.classIndex();
   int offset = 0;
   for(int i = 0; i < indices.length+1; i++) {
     if (i != classIndex) {
indices[offset++] = i+1;
     }
   }
   int subSpaceSize = numberOfAttributes(indices.length, getSubSpaceSize());
   Random random = data.getRandomNumberGenerator(m_Seed);
   
   for (int j = 0; j < m_Classifiers.length; j++) {
     if (m_Classifier instanceof Randomizable) {
((Randomizable) m_Classifiers[j]).setSeed(random.nextInt());
     }
     FilteredClassifier fc = new FilteredClassifier();
     fc.setClassifier(m_Classifiers[j]);
     m_Classifiers[j] = fc;
     Remove rm = new Remove();
     rm.setOptions(new String[]{"-V", "-R", randomSubSpace(indices,subSpaceSize,classIndex+1,random)});
     fc.setFilter(rm);

     // build the classifier
     //m_Classifiers[j].buildClassifier(m_data);
   }
   
   buildClassifiers();
   
   // save memory
   m_data = null;
 }