List of usage examples for weka.core.xml XStream read
public static Object read(Reader r) throws Exception
From source file:org.pentaho.di.scoring.WekaScoringData.java
License:Open Source License
/** * Loads a serialized model. Models can either be binary serialized Java * objects, objects deep-serialized to xml, or PMML. * * @param modelFile a <code>File</code> value * @return the model/*from w w w . j a va 2s. com*/ * @throws Exception if there is a problem laoding the model. */ public static WekaScoringModel loadSerializedModel(String modelFile, LogChannelInterface log, VariableSpace space) throws Exception { Object model = null; Instances header = null; int[] ignoredAttsForClustering = null; modelFile = space.environmentSubstitute(modelFile); FileObject modelF = KettleVFS.getFileObject(modelFile); if (!modelF.exists()) { throw new Exception(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoring.Error.NonExistentModelFile", space.environmentSubstitute(modelFile))); //$NON-NLS-1$ } InputStream is = KettleVFS.getInputStream(modelF); BufferedInputStream buff = new BufferedInputStream(is); if (modelFile.toLowerCase().endsWith(".xml")) { //$NON-NLS-1$ // assume it is PMML model = PMMLFactory.getPMMLModel(buff, null); // we will use the mining schema as the instance structure header = ((PMMLModel) model).getMiningSchema().getMiningSchemaAsInstances(); buff.close(); } else if (modelFile.toLowerCase().endsWith(".xstreammodel")) { //$NON-NLS-1$ log.logBasic(BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoringData.Log.LoadXMLModel")); //$NON-NLS-1$ if (XStream.isPresent()) { Vector v = (Vector) XStream.read(buff); model = v.elementAt(0); if (v.size() == 2) { // try and grab the header header = (Instances) v.elementAt(1); } buff.close(); } else { buff.close(); throw new Exception( BaseMessages.getString(WekaScoringMeta.PKG, "WekaScoringData.Error.CantLoadXMLModel")); //$NON-NLS-1$ } } else { InputStream stream = buff; if (modelFile.toLowerCase().endsWith(".gz")) { //$NON-NLS-1$ stream = new GZIPInputStream(buff); } ObjectInputStream oi = new ObjectInputStream(stream); model = oi.readObject(); // try and grab the header header = (Instances) oi.readObject(); if (model instanceof weka.clusterers.Clusterer) { // try and grab any attributes to be ignored during clustering try { ignoredAttsForClustering = (int[]) oi.readObject(); } catch (Exception ex) { // Don't moan if there aren't any :-) } } oi.close(); } WekaScoringModel wsm = WekaScoringModel.createScorer(model); wsm.setHeader(header); if (wsm instanceof WekaScoringClusterer && ignoredAttsForClustering != null) { ((WekaScoringClusterer) wsm).setAttributesToIgnore(ignoredAttsForClustering); } wsm.setLog(log); return wsm; }
From source file:reactivetechnologies.sentigrade.dto.ClassifiedModel.java
License:Open Source License
@SuppressWarnings("unchecked") public T readModel(InputStream stream) throws Exception { return (T) XStream.read(stream); }