📄 cobwebxubasedminingmodel.java
字号:
package com.prudsys.pdm.Models.Clustering.CDBased;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
import com.prudsys.pdm.Adapters.PmmlVersion20.ClusteringField;
import com.prudsys.pdm.Adapters.PmmlVersion20.ClusteringModel;
import com.prudsys.pdm.Adapters.PmmlVersion20.ComparisonMeasure;
import com.prudsys.pdm.Adapters.PmmlVersion20.DataDictionary;
import com.prudsys.pdm.Adapters.PmmlVersion20.Header;
import com.prudsys.pdm.Adapters.PmmlVersion20.MiningSchema;
import com.prudsys.pdm.Adapters.PmmlVersion20.PMML;
import com.prudsys.pdm.Adapters.PmmlVersion20.TransformationDictionary;
import com.prudsys.pdm.Core.ApplicationInputSpecification;
import com.prudsys.pdm.Core.MetaDataOperations;
import com.prudsys.pdm.Core.MiningDataSpecification;
import com.prudsys.pdm.Core.MiningException;
import com.prudsys.pdm.Core.MiningMatrixElement;
import com.prudsys.pdm.Core.MiningModel;
import com.prudsys.pdm.Input.MiningInputStream;
import com.prudsys.pdm.Input.MiningVector;
import com.prudsys.pdm.Input.Records.Arff.MiningArffStream;
import com.prudsys.pdm.Models.Clustering.Cluster;
import com.prudsys.pdm.Models.Clustering.ClusteringMiningModel;
import com.prudsys.pdm.Models.Clustering.ClusteringSettings;
import com.prudsys.pdm.Models.Clustering.Distance;
import com.prudsys.pdm.Transform.MiningTransformationActivity;
import com.prudsys.pdm.Utils.PmmlUtils;
public class CobwebXubasedMiningModel extends ClusteringMiningModel {
public static final int CENTER_BASED = 1;
/** Distribution-based clustering model. */
public static final int DISTRIBUTION_BASED = 2;
/** Distribution type. */
private int type = CENTER_BASED;
/**
* Empty constructor.
*/
public CobwebXubasedMiningModel() {
function = MiningModel.CLUSTERING_FUNCTION;
algorithm = MiningModel.CENTER_BASED_CLUSTERING_ALGORITHM;
}
// -----------------------------------------------------------------------
// Getter and setter methods
// -----------------------------------------------------------------------
/**
* Sets type of clustering (center-based, distribution-based).
*
* @param type
* new type of clustering
*/
public void setType(int type) {
this.type = type;
}
/**
* Returns type of clustering (center-based, distribution-based).
*
* @return type of clustering
*/
public int getType() {
return type;
}
public int apply(MiningVector miningVector) throws MiningException {
return (int) applyModelFunction(miningVector);
}
public double applyModelFunction(MiningVector miningVector) throws MiningException {
if (clusters == null || clusters.length == 0)
return -1;
// Run inner transformations (e.g. missing values replacement, outliers):
if (miningTransform != null)
miningVector = miningTransform.transform(miningVector);
// Transform vector into basis of mining model:
MetaDataOperations metaDataOp = miningSettings.getDataSpecification().getMetaDataOp();
metaDataOp.setUsageType(MetaDataOperations.USE_ATT_NAMES_AND_TYPES);
MiningVector miningVec = metaDataOp.transform(miningVector);
// Find nearest cluster:
int nearestClust = 0;
double minDist = distance.distance(miningVec, clusters[0].getCenterVec());
for (int i = 1; i < getNumberOfClusters(); i++) {
double dist = distance.distance(miningVec, clusters[i].getCenterVec());
if (dist < minDist) {
minDist = dist;
nearestClust = i;
};
};
return nearestClust;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -