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

📄 miningtransformationactivity.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

 /**
  * Title: XELOPES Data Mining Library
  * Description: The XELOPES library is an open platform-independent and data-source-independent library for Embedded Data Mining.
  * Copyright: Copyright (c) 2002 Prudential Systems Software GmbH
  * Company: ZSoft (www.zsoft.ru), Prudsys (www.prudsys.com)
  * @author Michael Thess
  * @version 1.1
  */

package com.prudsys.pdm.Transform;

import java.util.Vector;

import com.prudsys.pdm.Adapters.PmmlVersion20.DerivedField;
import com.prudsys.pdm.Adapters.PmmlVersion20.FieldColumnPair;
import com.prudsys.pdm.Adapters.PmmlVersion20.TransformationDictionary;
import com.prudsys.pdm.Core.MiningDataSpecification;
import com.prudsys.pdm.Core.MiningException;
import com.prudsys.pdm.Core.PmmlPresentable;
import com.prudsys.pdm.Cwm.Transformation.TransformationActivity;
import com.prudsys.pdm.Input.MiningInputStream;
import com.prudsys.pdm.Input.MiningVector;

/**
 * Mining transformation activity represents a sequence of mining transformation
 * steps.
 */
public class MiningTransformationActivity extends TransformationActivity implements MiningTransformer, MiningStreamTransformer, PmmlPresentable
{
  // -----------------------------------------------------------------------
  //  Variables declarations
  // -----------------------------------------------------------------------
  /** Vector containing all mining transformation steps. */
  private Vector transformationSteps = new Vector();

  /** Pretransformed meta data. Used for caching. */
  private MiningDataSpecification pretransMetaData = null;

  /** Transformed meta data. Used for caching. */
  private MiningDataSpecification transMetaData = null;

  // -----------------------------------------------------------------------
  //  Constructor
  // -----------------------------------------------------------------------
  /**
   * Empty constructor.
   */
  public MiningTransformationActivity()
  {
  }

  // -----------------------------------------------------------------------
  //  Getter and setter methods
  // -----------------------------------------------------------------------
  /**
   * Returns vector of transformation steps.
   *
   * @return vector of transformation steps
   */
  public Vector getTransformationSteps()
  {
    return transformationSteps;
  }

  /**
   * Sets vector of transformation steps.
   *
   * @param transformationSteps new vector of transformation steps
   */
  public void setTransformationSteps(Vector transformationSteps)
  {
    this.transformationSteps = transformationSteps;
  }

  /**
   * Get number of transformation steps.
   *
   * @return number of transformation steps
   */
  public int getNumberOfTransformationSteps() {

    return transformationSteps.size();
  }

  /**
   * Returns transformation step at given index.
   *
   * @param index index of transformation step
   * @return transformation step at given index
   */
  public MiningTransformationStep getTransformationStepAt(int index) {

    return (MiningTransformationStep) transformationSteps.elementAt(index);
  }

  /**
   * Add new transformation step as last step.
   *
   * @param miningTransformationStep new transformation step
   */
  public void addTransformationStep(MiningTransformationStep miningTransformationStep) {

    transformationSteps.addElement( miningTransformationStep );
  }

  /**
   * Add new mining transformation activity after last step.
   *
   * @param miningTransformationActivity mining transformation activity to add
   */
  public void addTransformationActivity(MiningTransformationActivity miningTransformationActivity) {

    for (int i = 0; i < miningTransformationActivity.getNumberOfTransformationSteps(); i++)
      addTransformationStep( miningTransformationActivity.getTransformationStepAt(i) );
  }

  // -----------------------------------------------------------------------
  //  Transformation methods
  // -----------------------------------------------------------------------
  /**
   * Transforms mining vector by subsequentially calling the transformations
   * of the mining transformation steps.
   *
   * Notice that this method can also be applied to a mining vector without
   * own meta data. In this case the last meta data transformation is used
   * as transformation ressource. Such last meta data transformation could have
   * been done either explicitly, applying transform to some meta data, or
   * implicitely, when a mining vactor with meta data was transformed. If
   * none of both cases has ever happened, for the mining vector (without
   * meta data) an exception is thrown.
   *
   * @param vector mining vector to transform
   * @return transformed mining vector, with meta data
   * @exception MiningException cannot transform mining vector
   */
  public MiningVector transform( MiningVector vector ) throws MiningException {

    // Transform meta data:
    MiningDataSpecification vecMetaData = vector.getMetaData();
    if (vecMetaData != null) {
      if (vecMetaData != pretransMetaData)
        transMetaData = transform(vecMetaData); // Caching
    }
    else {
      if (transMetaData == null)
        throw new MiningException("No meta data ressource for trafo available");
    }

    // Transform mining vector:
    MiningVector mv = vector;
    for (int i = 0; i < getNumberOfTransformationSteps(); i++) {
      mv = getTransformationStepAt(i).transform( mv );
    };

    return mv;
  }

  /**
   * Transforms meta data by subsequentially calling the meta data
   * transformations of the mining transformation steps.
   *
   * @param metaData meta data to transform
   * @return transformed meta data
   * @exception MiningException cannot transform meta data
   */
  public MiningDataSpecification transform( MiningDataSpecification metaData ) throws MiningException {

    // Caching:
    pretransMetaData = metaData;

    // Transformation of meta data:
    transMetaData = metaData;
    for (int i = 0; i < getNumberOfTransformationSteps(); i++) {
      transMetaData = getTransformationStepAt(i).transform( transMetaData );
    };

    return transMetaData;
  }

  /**
   * Transforms mining input stream into another one. Realized by calling
   * the transform methods of this class for all mining vectors. The
   * targetStream must contain an updatable mining stream.
   *
   * @param sourceStream mining stream used as source of transformation
   * @param targetStream mining strem used as target of transformation
   * @return number of vectors of transformation
   * @exception MiningException cannot transform mining input stream
   */
  public int transform( MiningInputStream sourceStream, MiningInputStream targetStream )
    throws MiningException {

    // Transform metadata:
    MiningDataSpecification metaDataSource = sourceStream.getMetaData();
    targetStream.updateSetMetaData( transform(metaDataSource) );

    // Transform stream:
    int nVec = 0;
    sourceStream.reset();
    targetStream.updateRemoveAllVectors();
    while (sourceStream.next()) {
      MiningVector targetVec = transform( sourceStream.read() );
      targetStream.updateAppendVector(targetVec);
      nVec = nVec + 1;
    };

    return nVec;
  }

  // -----------------------------------------------------------------------
  //  Methods of PMML handling
  // -----------------------------------------------------------------------
  /**
   * Creates PMML object TransformationDictionary of this object.
   *
   * @return TransformationDictionary element
   * @see com.prudsys.pdm.Adapters.PmmlVersion20.TransformationDictionary
   * @exception MiningException cannot create PMML object
   */
  public Object createPmmlObject() throws MiningException
  {
    TransformationDictionary dictionary = new TransformationDictionary();

    for (int i = 0; i < getNumberOfTransformationSteps(); i++) {
      MiningTransformationStep mst = getTransformationStepAt(i);
      MiningTransformationTask mtt = (MiningTransformationTask) mst.task;
      for (int j = 0; j < mtt.transformation.length; j++) {
        MiningTransformation mt = (MiningTransformation) mtt.transformation[j];
        if (! (mt instanceof MiningTransformationMap))

⌨️ 快捷键说明

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