List of usage examples for weka.core SerializedObject getObject
public Object getObject()
From source file:meka.classifiers.multilabel.AbstractMultiLabelClassifier.java
License:Open Source License
/** * Creates a given number of deep copies of the given multi-label classifier using serialization. * * @param model the classifier to copy//from w ww . j a va 2 s. c o m * @param num the number of classifier copies to create. * @return an array of classifiers. * @exception Exception if an error occurs */ public static MultiLabelClassifier[] makeCopies(MultiLabelClassifier model, int num) throws Exception { if (model == null) { throw new Exception("No model classifier set"); } MultiLabelClassifier classifiers[] = new MultiLabelClassifier[num]; SerializedObject so = new SerializedObject(model); for (int i = 0; i < classifiers.length; i++) { classifiers[i] = (MultiLabelClassifier) so.getObject(); } return classifiers; }
From source file:meka.classifiers.multilabel.ProblemTransformationMethod.java
License:Open Source License
/** * Creates a given number of deep copies of the given multi-label classifier using serialization. * * @param model the classifier to copy/* ww w .java2 s .c om*/ * @param num the number of classifier copies to create. * @return an array of classifiers. * @exception Exception if an error occurs */ public static ProblemTransformationMethod[] makeCopies(ProblemTransformationMethod model, int num) throws Exception { if (model == null) { throw new Exception("No model classifier set"); } ProblemTransformationMethod classifiers[] = new ProblemTransformationMethod[num]; SerializedObject so = new SerializedObject(model); for (int i = 0; i < classifiers.length; i++) { classifiers[i] = (ProblemTransformationMethod) so.getObject(); } return classifiers; }
From source file:meka.core.ObjectUtils.java
License:Open Source License
/** * Creates a deep copy of the given object (must be serializable!). Returns * null in case of an error./*w w w. j ava 2 s . co m*/ * * @param o the object to copy * @return the deep copy */ public static Object deepCopy(Object o) { Object result; SerializedObject so; try { so = new SerializedObject((Serializable) o); result = so.getObject(); } catch (Exception e) { System.err.println("Failed to serialize " + o.getClass().getName() + ":"); e.printStackTrace(); result = null; } return result; }
From source file:milk.classifiers.MIClassifier.java
License:Open Source License
/** * Creates copies of the current classifier, which can then * be used for boosting etc. Note that this method now uses * Serialization to perform a deep copy, so the Classifier * object must be fully Serializable. Any currently built model * will now be copied as well.//from w w w . ja v a 2 s . c om * * @param model an example classifier to copy * @param num the number of classifiers copies to create. * @return an array of MI-classifiers. * @exception Exception if an error occurs */ public static MIClassifier[] makeCopies(MIClassifier model, int num) throws Exception { if (model == null) { throw new Exception("No model classifier set"); } MIClassifier[] classifiers = new MIClassifier[num]; SerializedObject so = new SerializedObject(model); for (int i = 0; i < classifiers.length; i++) { classifiers[i] = (MIClassifier) so.getObject(); } return classifiers; }
From source file:milk.experiment.MIRemoteExperiment.java
License:Open Source License
/** * Prepares a remote experiment for running, creates sub experiments *// w w w .jav a2s . c om * @exception Exception if an error occurs */ public void initialize() throws Exception { if (m_baseExperiment == null) { throw new Exception("No base experiment specified!"); } m_experimentAborted = false; m_finishedCount = 0; m_failedCount = 0; m_RunNumber = getRunLower(); m_DatasetNumber = 0; m_PropertyNumber = 0; m_CurrentProperty = -1; m_CurrentInstances = null; m_Finished = false; if (m_remoteHosts.size() == 0) { throw new Exception("No hosts specified!"); } // initialize all remote hosts to available m_remoteHostsStatus = new int[m_remoteHosts.size()]; m_remoteHostFailureCounts = new int[m_remoteHosts.size()]; m_remoteHostsQueue = new Queue(); // prime the hosts queue for (int i = 0; i < m_remoteHosts.size(); i++) { m_remoteHostsQueue.push(new Integer(i)); } // set up sub experiments m_subExpQueue = new Queue(); int numExps; if (getSplitByDataSet()) { numExps = m_baseExperiment.getDatasets().size(); } else { numExps = getRunUpper() - getRunLower() + 1; } m_subExperiments = new MIExperiment[numExps]; m_subExpComplete = new int[numExps]; // create copy of base experiment SerializedObject so = new SerializedObject(m_baseExperiment); if (getSplitByDataSet()) { for (int i = 0; i < m_baseExperiment.getDatasets().size(); i++) { m_subExperiments[i] = (MIExperiment) so.getObject(); // one for each data set DefaultListModel temp = new DefaultListModel(); temp.addElement(m_baseExperiment.getDatasets().elementAt(i)); m_subExperiments[i].setDatasets(temp); m_subExpQueue.push(new Integer(i)); } } else { for (int i = getRunLower(); i <= getRunUpper(); i++) { m_subExperiments[i - getRunLower()] = (MIExperiment) so.getObject(); // one run for each sub experiment m_subExperiments[i - getRunLower()].setRunLower(i); m_subExperiments[i - getRunLower()].setRunUpper(i); m_subExpQueue.push(new Integer(i - getRunLower())); } } }
From source file:mulan.data.LabelsMetaDataImpl.java
License:Open Source License
@SuppressWarnings("unchecked") @Override//from www . java 2 s .c om public LabelsMetaData clone() { Set<LabelNode> rootNodes = null; try { SerializedObject obj = new SerializedObject(rootLabelNodes); rootNodes = (Set<LabelNode>) obj.getObject(); } catch (Exception ex) { throw new WekaException("Failed to create copy of 'root label nodes'.", ex); } LabelsMetaDataImpl copyResult = new LabelsMetaDataImpl(); for (LabelNode rootNode : rootNodes) { copyResult.addRootNode(rootNode); } return copyResult; }
From source file:org.pentaho.di.scoring.WekaScoring.java
License:Open Source License
/** * Process an incoming row of data./* w ww . jav a 2 s . c o m*/ * * @param smi a <code>StepMetaInterface</code> value * @param sdi a <code>StepDataInterface</code> value * @return a <code>boolean</code> value * @throws KettleException if an error occurs */ @Override public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { m_meta = (WekaScoringMeta) smi; m_data = (WekaScoringData) sdi; Object[] r = getRow(); if (r == null) { if (m_data.getModel().isBatchPredictor() && !m_meta.getFileNameFromField() && m_batch.size() > 0) { try { outputBatchRows(); } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.ProblemWhileGettingPredictionsForBatch"), ex); //$NON-NLS-1$ } } // see if we have an incremental model that is to be saved somewhere. if (!m_meta.getFileNameFromField() && m_meta.getUpdateIncrementalModel()) { if (!Const.isEmpty(m_meta.getSavedModelFileName())) { // try and save that sucker... try { String modName = environmentSubstitute(m_meta.getSavedModelFileName()); File updatedModelFile = null; if (modName.startsWith("file:")) { //$NON-NLS-1$ try { modName = modName.replace(" ", "%20"); //$NON-NLS-1$ //$NON-NLS-2$ updatedModelFile = new File(new java.net.URI(modName)); } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.MalformedURIForUpdatedModelFile"), ex); //$NON-NLS-1$ } } else { updatedModelFile = new File(modName); } WekaScoringData.saveSerializedModel(m_data.getModel(), updatedModelFile); } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.ProblemSavingUpdatedModelToFile"), ex); //$NON-NLS-1$ } } } if (m_meta.getFileNameFromField()) { // clear the main model m_data.setModel(null); } else { m_data.getModel().done(); } setOutputDone(); return false; } // Handle the first row if (first) { first = false; m_data.setOutputRowMeta(getInputRowMeta().clone()); if (m_meta.getFileNameFromField()) { RowMetaInterface inputRowMeta = getInputRowMeta(); m_indexOfFieldToLoadFrom = inputRowMeta.indexOfValue(m_meta.getFieldNameToLoadModelFrom()); if (m_indexOfFieldToLoadFrom < 0) { throw new KettleException("Unable to locate model file field " //$NON-NLS-1$ + m_meta.getFieldNameToLoadModelFrom() + " in the incoming stream!"); //$NON-NLS-1$ } if (!inputRowMeta.getValueMeta(m_indexOfFieldToLoadFrom).isString()) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.")); //$NON-NLS-1$ } if (m_meta.getCacheLoadedModels()) { m_modelCache = new HashMap<String, WekaScoringModel>(); } // set the default model if (!Const.isEmpty(m_meta.getSerializedModelFileName())) { WekaScoringModel defaultModel = setModel(m_meta.getSerializedModelFileName()); m_data.setDefaultModel(defaultModel); } else if (m_meta.getModel() != null) { try { SerializedObject so = new SerializedObject(m_meta.getModel()); WekaScoringModel defaultModel = (WekaScoringModel) so.getObject(); m_data.setDefaultModel(defaultModel); } catch (Exception ex) { throw new KettleException(ex); } } // set the main model from this row setModelFromField(r); logBasic(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Message.SourcingModelNamesFromInputField", //$NON-NLS-1$ m_meta.getFieldNameToLoadModelFrom())); } else if (m_meta.getModel() == null || !Const.isEmpty(m_meta.getSerializedModelFileName())) { // If we don't have a model, or a file name is set, then load from file // Check that we have a file to try and load a classifier from if (Const.isEmpty(m_meta.getSerializedModelFileName())) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.NoFilenameToLoadModelFrom")); //$NON-NLS-1$ } setModel(m_meta.getSerializedModelFileName()); } else if (m_meta.getModel() != null) { // copy the primary model over to the data class try { SerializedObject so = new SerializedObject(m_meta.getModel()); WekaScoringModel defaultModel = (WekaScoringModel) so.getObject(); m_data.setModel(defaultModel); } catch (Exception ex) { throw new KettleException(ex); } } // Check the input row meta data against the instances // header that the classifier was trained with try { Instances header = m_data.getModel().getHeader(); m_data.mapIncomingRowMetaData(header, getInputRowMeta(), m_meta.getUpdateIncrementalModel(), log); } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.IncomingDataFormatDoesNotMatchModel"), ex); //$NON-NLS-1$ } // Determine the output format m_meta.getFields(m_data.getOutputRowMeta(), getStepname(), null, null, this); if (!Const.isEmpty(m_meta.getBatchScoringSize())) { try { String bss = environmentSubstitute(m_meta.getBatchScoringSize()); m_batchScoringSize = Integer.parseInt(bss); } catch (NumberFormatException ex) { String modelPreferred = environmentSubstitute( ((BatchPredictor) m_meta.getModel().getModel()).getBatchSize()); boolean sizeOk = false; if (!Const.isEmpty(modelPreferred)) { logBasic(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Message.UnableToParseBatchScoringSize", //$NON-NLS-1$ modelPreferred)); try { m_batchScoringSize = Integer.parseInt(modelPreferred); sizeOk = true; } catch (NumberFormatException e) { // ignore } } if (!sizeOk) { logBasic(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Message.UnableToParseBatchScoringSizeDefault", //$NON-NLS-1$ WekaScoringMeta.DEFAULT_BATCH_SCORING_SIZE)); m_batchScoringSize = WekaScoringMeta.DEFAULT_BATCH_SCORING_SIZE; } } } if (m_data.getModel().isBatchPredictor()) { m_batch = new ArrayList<Object[]>(); } } // end (if first) // Make prediction for row using model try { if (m_meta.getFileNameFromField()) { setModelFromField(r); } if (m_data.getModel().isBatchPredictor() && !m_meta.getFileNameFromField()) { try { // add current row to batch m_batch.add(r); if (m_batch.size() == m_batchScoringSize) { outputBatchRows(); } } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.ErrorGettingBatchPredictions"), ex); //$NON-NLS-1$ } } else { Object[] outputRow = m_data.generatePrediction(getInputRowMeta(), m_data.getOutputRowMeta(), r, m_meta); putRow(m_data.getOutputRowMeta(), outputRow); } } catch (Exception ex) { throw new KettleException(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.UnableToMakePredictionForRow", getLinesRead()), ex); //$NON-NLS-1$ } if (log.isRowLevel()) { log.logRowlevel(toString(), "Read row #" + getLinesRead() + " : " + r); //$NON-NLS-1$ //$NON-NLS-2$ } if (checkFeedback(getLinesRead())) { logBasic("Linenr " + getLinesRead()); //$NON-NLS-1$ } return true; }
From source file:org.pentaho.di.scoring.WekaScoringMeta.java
License:Open Source License
/** * Clone this step's meta data/*from w w w . jav a2s.c om*/ * * @return the cloned meta data */ @Override public Object clone() { WekaScoringMeta retval = (WekaScoringMeta) super.clone(); // deep copy the model (if any) if (m_model != null) { try { SerializedObject so = new SerializedObject(m_model); WekaScoringModel copy = (WekaScoringModel) so.getObject(); copy.setLog(getLog()); retval.setModel(copy); } catch (Exception ex) { logError(BaseMessages.getString(PKG, "WekaScoringMeta.Log.DeepCopyingError")); //$NON-NLS-1$ } } // deep copy the default model (if any) if (m_defaultModel != null) { try { SerializedObject so = new SerializedObject(m_defaultModel); WekaScoringModel copy = (WekaScoringModel) so.getObject(); copy.setLog(getLog()); retval.setDefaultModel(copy); } catch (Exception ex) { logError(BaseMessages.getString(PKG, "WekaScoringMeta.Log.DeepCopyingError")); //$NON-NLS-1$ } } return retval; }