/** * Test method for this class * * @param args the commandline options */ public static void main(String[] args) { runCheck(new CheckClusterer(), args); } }
boolean updateable) { boolean PNom = canPredict(true, false, false, false, false, multiInstance)[0]; boolean PNum = canPredict(false, true, false, false, false, multiInstance)[0]; boolean PStr = canPredict(false, false, true, false, false, multiInstance)[0]; boolean PDat = canPredict(false, false, false, true, false, multiInstance)[0]; boolean PRel; if (!multiInstance) { PRel = canPredict(false, false, false, false, true, multiInstance)[0]; } else { PRel = false; instanceWeights(PNom, PNum, PStr, PDat, PRel, multiInstance); canHandleZeroTraining(PNom, PNum, PStr, PDat, PRel, multiInstance); boolean handleMissingPredictors = canHandleMissing(PNom, PNum, PStr, PDat, PRel, multiInstance, true, 20)[0]; if (handleMissingPredictors) { canHandleMissing(PNom, PNum, PStr, PDat, PRel, multiInstance, true, 100); correctBuildInitialisation(PNom, PNum, PStr, PDat, PRel, multiInstance); datasetIntegrity(PNom, PNum, PStr, PDat, PRel, multiInstance, handleMissingPredictors); if (updateable) { updatingEquality(PNom, PNum, PStr, PDat, PRel, multiInstance);
/** * Begin the tests, reporting results to System.out */ @Override public void doTests() { if (getClusterer() == null) { println("\n=== No clusterer set ==="); return; } println("\n=== Check on Clusterer: " + getClusterer().getClass().getName() + " ===\n"); // Start tests println("--> Checking for interfaces"); canTakeOptions(); boolean updateable = updateableClusterer()[0]; boolean weightedInstancesHandler = weightedInstancesHandler()[0]; boolean multiInstanceHandler = multiInstanceHandler()[0]; println("--> Clusterer tests"); declaresSerialVersionUID(); runTests(weightedInstancesHandler, multiInstanceHandler, updateable); }
print("clusterer doesn't alter original datasets"); printAttributeSummary(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance); print("..."); int numTrain = getNumInstances(), missingLevel = 20; Clusterer clusterer = null; try { train = makeTestDataset(42, numTrain, nominalPredictor ? getNumNominal() : 0, numericPredictor ? getNumNumeric() : 0, stringPredictor ? getNumString() : 0, datePredictor ? getNumDate() : 0, relationalPredictor ? getNumRelational() : 0, multiInstance); if (nominalPredictor && !multiInstance) { train.deleteAttributeAt(0); addMissing(train, missingLevel, predictorMissing); clusterer = AbstractClusterer.makeCopies(getClusterer(), 1)[0]; } catch (Exception ex) { throw new Error("Error setting up for tests: " + ex.getMessage()); Instances trainCopy = new Instances(train); clusterer.buildClusterer(trainCopy); compareDatasets(train, trainCopy); println("yes"); result[0] = true; } catch (Exception ex) { println("no");
m_Tester = new CheckClusterer(); m_Tester.setSilent(true); m_Tester.setClusterer(m_Clusterer); m_Tester.setNumInstances(20); m_Tester.setDebug(DEBUG); m_OptionTester = getOptionTester(); m_GOETester = getGOETester(); m_updateableClusterer = m_Tester.updateableClusterer()[0]; m_weightedInstancesHandler = m_Tester.weightedInstancesHandler()[0]; m_multiInstanceHandler = m_Tester.multiInstanceHandler()[0]; m_NominalPredictors = false; m_NumericPredictors = false;
print("100% "); print("missing"); if (predictorMissing) { print(" predictor"); print(" values"); printAttributeSummary(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance); print("..."); Vector<String> accepts = new Vector<String>(); accepts.addElement("missing"); accepts.addElement("value"); accepts.addElement("train"); int numTrain = getNumInstances(); return runBasicTest(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, missingLevel, predictorMissing, numTrain, accepts);
if (m_Tester.hasClasspathProblems()) return; succeeded = false; train = m_Tester.makeTestDataset( 42, m_Tester.getNumInstances(), m_NominalPredictors ? 2 : 0, m_NumericPredictors ? 1 : 0,
/** * tests whether the scheme declares a serialVersionUID. */ public void testSerialVersionUID() { boolean[] result; result = m_Tester.declaresSerialVersionUID(); if (!result[0]) fail("Doesn't declare serialVersionUID!"); }
/** * tests whether the clusterer can handle zero training instances * * @see CheckClusterer#canHandleZeroTraining(boolean, boolean, boolean, boolean, boolean, boolean) * @see CheckClusterer#runTests(boolean, boolean, boolean) */ public void testZeroTraining() { boolean[] result; if (!canPredict()) return; result = m_Tester.canHandleZeroTraining( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler); if (!result[0] && !result[1]) fail("Error handling zero training instances!"); }
/** * tests whether the clusterer correctly initializes in the * buildClusterer method * * @see CheckClusterer#correctBuildInitialisation(boolean, boolean, boolean, boolean, boolean, boolean) * @see CheckClusterer#runTests(boolean, boolean, boolean) */ public void testBuildInitialization() { boolean[] result; if (!canPredict()) return; result = m_Tester.correctBuildInitialisation( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler); if (!result[0] && !result[1]) fail("Incorrect build initialization!"); }
/** * tests whether the clusterer handles instance weights correctly * * @see CheckClusterer#instanceWeights(boolean, boolean, boolean, boolean, boolean, boolean) * @see CheckClusterer#runTests(boolean, boolean, boolean) */ public void testInstanceWeights() { boolean[] result; if (m_weightedInstancesHandler) { if (!canPredict()) return; result = m_Tester.instanceWeights( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler); if (!result[0]) System.err.println("Error handling instance weights!"); } }
/** * tests whether the clusterer alters the training set during training. * * @see CheckClusterer#datasetIntegrity(boolean, boolean, boolean, boolean, boolean, boolean, boolean) * @see CheckClusterer#runTests(boolean, boolean, boolean) */ public void testDatasetIntegrity() { boolean[] result; if (!canPredict()) return; result = m_Tester.datasetIntegrity( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler, m_handleMissingPredictors); if (!result[0] && !result[1]) fail("Training set is altered during training!"); }
/** * checks whether the clusterer can handle the given percentage of * missing predictors * * @param percent the percentage of missing predictors * @param allowFail if true a fail statement may be executed * @return true if the clusterer can handle it */ protected boolean checkMissingPredictors(int percent, boolean allowFail) { boolean[] result; result = m_Tester.canHandleMissing( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler, true, percent); if (allowFail) { if (!result[0] && !result[1]) fail("Error handling " + percent + "% missing predictors!"); } return result[0]; }
att = "relational"; result = m_Tester.canPredict(nom, num, str, dat, rel, m_multiInstanceHandler); if (nom) m_NominalPredictors = result[0];
print("clusterer doesn't alter original datasets"); printAttributeSummary(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance); print("..."); int numTrain = getNumInstances(), missingLevel = 20; Clusterer clusterer = null; try { train = makeTestDataset(42, numTrain, nominalPredictor ? getNumNominal() : 0, numericPredictor ? getNumNumeric() : 0, stringPredictor ? getNumString() : 0, datePredictor ? getNumDate() : 0, relationalPredictor ? getNumRelational() : 0, multiInstance); if (nominalPredictor && !multiInstance) { train.deleteAttributeAt(0); addMissing(train, missingLevel, predictorMissing); clusterer = AbstractClusterer.makeCopies(getClusterer(), 1)[0]; } catch (Exception ex) { throw new Error("Error setting up for tests: " + ex.getMessage()); Instances trainCopy = new Instances(train); clusterer.buildClusterer(trainCopy); compareDatasets(train, trainCopy); println("yes"); result[0] = true; } catch (Exception ex) { println("no");
m_Tester = new CheckClusterer(); m_Tester.setSilent(true); m_Tester.setClusterer(m_Clusterer); m_Tester.setNumInstances(20); m_Tester.setDebug(DEBUG); m_OptionTester = getOptionTester(); m_GOETester = getGOETester(); m_updateableClusterer = m_Tester.updateableClusterer()[0]; m_weightedInstancesHandler = m_Tester.weightedInstancesHandler()[0]; m_multiInstanceHandler = m_Tester.multiInstanceHandler()[0]; m_NominalPredictors = false; m_NumericPredictors = false;
print("100% "); print("missing"); if (predictorMissing) { print(" predictor"); print(" values"); printAttributeSummary(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance); print("..."); Vector<String> accepts = new Vector<String>(); accepts.addElement("missing"); accepts.addElement("value"); accepts.addElement("train"); int numTrain = getNumInstances(); return runBasicTest(nominalPredictor, numericPredictor, stringPredictor, datePredictor, relationalPredictor, multiInstance, missingLevel, predictorMissing, numTrain, accepts);
if (m_Tester.hasClasspathProblems()) return; succeeded = false; train = m_Tester.makeTestDataset( 42, m_Tester.getNumInstances(), m_NominalPredictors ? 2 : 0, m_NumericPredictors ? 1 : 0,
/** * tests whether the scheme declares a serialVersionUID. */ public void testSerialVersionUID() { boolean[] result; result = m_Tester.declaresSerialVersionUID(); if (!result[0]) fail("Doesn't declare serialVersionUID!"); }
/** * tests whether the clusterer can handle zero training instances * * @see CheckClusterer#canHandleZeroTraining(boolean, boolean, boolean, boolean, boolean, boolean) * @see CheckClusterer#runTests(boolean, boolean, boolean) */ public void testZeroTraining() { boolean[] result; if (!canPredict()) return; result = m_Tester.canHandleZeroTraining( m_NominalPredictors, m_NumericPredictors, m_StringPredictors, m_DatePredictors, m_RelationalPredictors, m_multiInstanceHandler); if (!result[0] && !result[1]) fail("Error handling zero training instances!"); }