⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkclassifier.java

📁 Java 编写的多种数据挖掘算法 包括聚类、分类、预处理等
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
      println("yes");      result[0] = true;    }    else {      println("no");      result[0] = false;    }        return result;  }    /**   * Checks basic prediction of the scheme, for simple non-troublesome   * datasets.   *   * @param nominalPredictor if true use nominal predictor attributes   * @param numericPredictor if true use numeric predictor attributes   * @param stringPredictor if true use string predictor attributes   * @param datePredictor if true use date predictor attributes   * @param relationalPredictor if true use relational predictor attributes   * @param multiInstance whether multi-instance is needed   * @param classType the class type (NOMINAL, NUMERIC, etc.)   * @return index 0 is true if the test was passed, index 1 is true if test    *         was acceptable   */  protected boolean[] canPredict(      boolean nominalPredictor,      boolean numericPredictor,       boolean stringPredictor,       boolean datePredictor,      boolean relationalPredictor,      boolean multiInstance,      int classType) {        print("basic predict");    printAttributeSummary(        nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, classType);    print("...");    FastVector accepts = new FastVector();    accepts.addElement("nominal");    accepts.addElement("numeric");    accepts.addElement("string");    accepts.addElement("date");    accepts.addElement("relational");    accepts.addElement("multi-instance");    accepts.addElement("not in classpath");    int numTrain = getNumInstances(), numTest = getNumInstances(),     numClasses = 2, missingLevel = 0;    boolean predictorMissing = false, classMissing = false;        return runBasicTest(nominalPredictor, numericPredictor, stringPredictor,         datePredictor, relationalPredictor,         multiInstance,        classType,         missingLevel, predictorMissing, classMissing,        numTrain, numTest, numClasses,         accepts);  }    /**   * Checks whether nominal schemes can handle more than two classes.   * If a scheme is only designed for two-class problems it should   * throw an appropriate exception for multi-class problems.   *   * @param nominalPredictor if true use nominal predictor attributes   * @param numericPredictor if true use numeric predictor attributes   * @param stringPredictor if true use string predictor attributes   * @param datePredictor if true use date predictor attributes   * @param relationalPredictor if true use relational predictor attributes   * @param multiInstance whether multi-instance is needed   * @param numClasses the number of classes to test   * @return index 0 is true if the test was passed, index 1 is true if test    *         was acceptable   */  protected boolean[] canHandleNClasses(      boolean nominalPredictor,      boolean numericPredictor,       boolean stringPredictor,       boolean datePredictor,      boolean relationalPredictor,      boolean multiInstance,      int numClasses) {        print("more than two class problems");    printAttributeSummary(        nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, Attribute.NOMINAL);    print("...");    FastVector accepts = new FastVector();    accepts.addElement("number");    accepts.addElement("class");    int numTrain = getNumInstances(), numTest = getNumInstances(),     missingLevel = 0;    boolean predictorMissing = false, classMissing = false;        return runBasicTest(nominalPredictor, numericPredictor, stringPredictor,                         datePredictor, relationalPredictor,                         multiInstance,                        Attribute.NOMINAL,                        missingLevel, predictorMissing, classMissing,                        numTrain, numTest, numClasses,                         accepts);  }    /**   * Checks whether the scheme can handle class attributes as Nth attribute.   *   * @param nominalPredictor if true use nominal predictor attributes   * @param numericPredictor if true use numeric predictor attributes   * @param stringPredictor if true use string predictor attributes   * @param datePredictor if true use date predictor attributes   * @param relationalPredictor if true use relational predictor attributes   * @param multiInstance whether multi-instance is needed   * @param classType the class type (NUMERIC, NOMINAL, etc.)   * @param classIndex the index of the class attribute (0-based, -1 means last attribute)   * @return index 0 is true if the test was passed, index 1 is true if test    *         was acceptable   * @see TestInstances#CLASS_IS_LAST   */  protected boolean[] canHandleClassAsNthAttribute(      boolean nominalPredictor,      boolean numericPredictor,       boolean stringPredictor,       boolean datePredictor,      boolean relationalPredictor,      boolean multiInstance,      int classType,      int classIndex) {        if (classIndex == TestInstances.CLASS_IS_LAST)      print("class attribute as last attribute");    else      print("class attribute as " + (classIndex + 1) + ". attribute");    printAttributeSummary(        nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, classType);    print("...");    FastVector accepts = new FastVector();    int numTrain = getNumInstances(), numTest = getNumInstances(), numClasses = 2,     missingLevel = 0;    boolean predictorMissing = false, classMissing = false;        return runBasicTest(nominalPredictor, numericPredictor, stringPredictor,                         datePredictor, relationalPredictor,                         multiInstance,                        classType,                        classIndex,                        missingLevel, predictorMissing, classMissing,                        numTrain, numTest, numClasses,                         accepts);  }    /**   * Checks whether the scheme can handle zero training instances.   *   * @param nominalPredictor if true use nominal predictor attributes   * @param numericPredictor if true use numeric predictor attributes   * @param stringPredictor if true use string predictor attributes   * @param datePredictor if true use date predictor attributes   * @param relationalPredictor if true use relational predictor attributes   * @param multiInstance whether multi-instance is needed   * @param classType the class type (NUMERIC, NOMINAL, etc.)   * @return index 0 is true if the test was passed, index 1 is true if test    *         was acceptable   */  protected boolean[] canHandleZeroTraining(      boolean nominalPredictor,      boolean numericPredictor,       boolean stringPredictor,       boolean datePredictor,      boolean relationalPredictor,      boolean multiInstance,      int classType) {        print("handle zero training instances");    printAttributeSummary(        nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, classType);    print("...");    FastVector accepts = new FastVector();    accepts.addElement("train");    accepts.addElement("value");    int numTrain = 0, numTest = getNumInstances(), numClasses = 2,     missingLevel = 0;    boolean predictorMissing = false, classMissing = false;        return runBasicTest(              nominalPredictor, numericPredictor, stringPredictor,               datePredictor, relationalPredictor,               multiInstance,              classType,               missingLevel, predictorMissing, classMissing,              numTrain, numTest, numClasses,               accepts);  }    /**   * Checks whether the scheme correctly initialises models when    * buildClassifier is called. This test calls buildClassifier with   * one training dataset and records performance on a test set.    * buildClassifier is then called on a training set with different   * structure, and then again with the original training set. The   * performance on the test set is compared with the original results   * and any performance difference noted as incorrect build initialisation.   *   * @param nominalPredictor if true use nominal predictor attributes   * @param numericPredictor if true use numeric predictor attributes   * @param stringPredictor if true use string predictor attributes   * @param datePredictor if true use date predictor attributes   * @param relationalPredictor if true use relational predictor attributes   * @param multiInstance whether multi-instance is needed   * @param classType the class type (NUMERIC, NOMINAL, etc.)   * @return index 0 is true if the test was passed, index 1 is true if the   *         scheme performs worse than ZeroR, but without error (index 0 is   *         false)   */  protected boolean[] correctBuildInitialisation(      boolean nominalPredictor,      boolean numericPredictor,       boolean stringPredictor,       boolean datePredictor,      boolean relationalPredictor,      boolean multiInstance,      int classType) {    boolean[] result = new boolean[2];        print("correct initialisation during buildClassifier");    printAttributeSummary(        nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, classType);    print("...");    int numTrain = getNumInstances(), numTest = getNumInstances(),     numClasses = 2, missingLevel = 0;    boolean predictorMissing = false, classMissing = false;        Instances train1 = null;    Instances test1 = null;    Instances train2 = null;    Instances test2 = null;    Classifier classifier = null;    Evaluation evaluation1A = null;    Evaluation evaluation1B = null;    Evaluation evaluation2 = null;    boolean built = false;    int stage = 0;    try {            // Make two sets of train/test splits with different       // numbers of attributes      train1 = makeTestDataset(42, numTrain,                                nominalPredictor ? 2 : 0,                               numericPredictor ? 1 : 0,                                stringPredictor ? 1 : 0,                                datePredictor ? 1 : 0,                                relationalPredictor ? 1 : 0,                                numClasses,                                classType,                               multiInstance);      train2 = makeTestDataset(84, numTrain,                                nominalPredictor ? 3 : 0,                               numericPredictor ? 2 : 0,                                stringPredictor ? 1 : 0,                                datePredictor ? 1 : 0,                                relationalPredictor ? 1 : 0,                                numClasses,                                classType,                               multiInstance);      test1 = makeTestDataset(24, numTest,                              nominalPredictor ? 2 : 0,                              numericPredictor ? 1 : 0,                               stringPredictor ? 1 : 0,                               datePredictor ? 1 : 0,                               relationalPredictor ? 1 : 0,                               numClasses,                               classType,                              multiInstance);      test2 = makeTestDataset(48, numTest,                              nominalPredictor ? 3 : 0,                              numericPredictor ? 2 : 0,                               stringPredictor ? 1 : 0,                               datePredictor ? 1 : 0,                               relationalPredictor ? 1 : 0,                               numClasses,                               classType,                              multiInstance);      if (missingLevel > 0) {        addMissing(train1, missingLevel, predictorMissing, classMissing);        addMissing(test1, Math.min(missingLevel,50), predictorMissing,             classMissing);        addMissing(train2, missingLevel, predictorMissing, classMissing);        addMissing(test2, Math.min(missingLevel,50), predictorMissing,             classMissing);      }            classifier = Classifier.makeCopies(getClassifier(), 1)[0];      evaluation1A = new Evaluation(train1);      evaluation1B = new Evaluation(train1);      evaluation2 = new Evaluation(train2);    } catch (Exception ex) {      throw new Error("Error setting up for tests: " + ex.getMessage());    }    try {      stage = 0;      classifier.buildClassifier(train1);      built = true;      if (!testWRTZeroR(classifier, evaluation1A, train1, test1)[0]) {        throw new Exception("Scheme performs worse than ZeroR");      }            stage = 1;      built = false;      classifier.buildClassifier(train2);      built = true;      if (!testWRTZeroR(classifier, evaluation2, train2, test2)[0]) {        throw new Exception("Scheme performs worse than ZeroR");      }            stage = 2;      built = false;      classifier.buildClassifier(train1);      built = true;      if (!testWRTZeroR(classifier, evaluation1B, train1, test1)[0]) {        throw new Exception("Scheme performs worse than ZeroR");      }            stage = 3;      if (!evaluation1A.equals(evaluation1B)) {        if (m_Debug) {          println("\n=== Full report ===\n"              + evaluation1A.toSummaryString("\nFirst buildClassifier()",                  true)                  + "\n\n");          println(              evaluation1B.toSummaryString("\nSecond buildClassifier()",                  true)                  + "\n\n");        }        throw new Exception("Results differ between buildClassifier calls");      }      println("yes");      result[0] = true;            if (false && m_Debug) {        println("\n=== Full report ===\n"            + evaluation1A.toSummaryString("\nFirst buildClassifier()",                true)                + "\n\n");        println(            evaluation1B.toSummaryString("\nSecond buildClassifier()",                true)                + "\n\n");      }    }     catch (Exception ex) {      String msg = ex.getMessage().toLowerCase();      if (msg.indexOf("worse than zeror") >= 0) {        println("warning: performs worse than ZeroR");        result[0] = true;        result[1] = true;      } else {        println("no");        result[0] = false;      }      if (m_Debug) {        println("\n=== Full Report ===");        print("Problem during");        if (built) {          print(" testing");        } else {          print(" training");        }        switch (stage) {          case 0:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -