|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectweka.core.metrics.Metric
weka.core.metrics.LearnableMetric
weka.core.metrics.WeightedMahalanobis
WeightedMahalanobis class Implements a weighted Mahalanobis distance metric weighted by a full matrix of weights.
Field Summary | |
static int |
CONVERSION_EXPONENTIAL
|
static int |
CONVERSION_LAPLACIAN
We can have different ways of converting from distance to similarity |
static int |
CONVERSION_UNIT
|
protected int |
m_conversionType
The method of converting, by default laplacian |
protected double[][] |
m_maxPoints
Max instance storage (max is in the space of projected instances, values are in **ORIGINAL** space) Currently somewhat convoluted, TODO: re-write the max value code in MPCKMeans |
protected double[][] |
m_maxProjPoints
|
protected java.util.HashMap |
m_projectedInstanceHash
A hash where instances are projected using the weights |
protected double[][] |
m_weights
The full matrix of attribute weights |
protected double[][] |
m_weightsSquare
weights^0.5, used to project instances to the new space to speed up calculations |
static Tag[] |
TAGS_CONVERSION
|
Fields inherited from class weka.core.metrics.LearnableMetric |
m_attrWeights, m_classifier, m_classifierClassName, m_classifierRequiresNominalClass, m_numPosDiffInstances, m_posNegDiffInstanceRatio, m_trainable |
Fields inherited from class weka.core.metrics.Metric |
m_attrIdxs, m_classIndex, m_numAttributes |
Constructor Summary | |
WeightedMahalanobis()
Create a default new metric |
|
WeightedMahalanobis(int numAttributes)
Create a new metric. |
|
WeightedMahalanobis(int[] _attrIdxs)
Creates a new metric which takes specified attributes. |
Method Summary | |
void |
buildMetric(Instances data)
Create a new metric for operating on specified instances |
void |
buildMetric(int numAttributes)
Generates a new Metric. |
void |
buildMetric(int numAttributes,
java.lang.String[] options)
Generates a new Metric. |
java.lang.Object |
clone()
Create a copy of this metric |
Instance |
createDiffInstance(Instance instance1,
Instance instance2)
Create an instance with features corresponding to dot-product components of the two given instances |
Jama.Matrix |
createDiffMatrix(Instance instance1,
Instance instance2)
Create a matrix of the form (inst1 - inst2) * (inst1 - inst2)^T |
double |
distance(Instance instance1,
Instance instance2)
Returns a distance value between two instances. |
double |
distanceNonWeighted(Instance instance1,
Instance instance2)
Returns a non-weighted distance value between two instances. |
Instance |
getCentroidInstance(Instances instances,
boolean fastMode,
boolean normalized)
Given a cluster of instances, return the centroid of that cluster |
SelectedTag |
getConversionType()
return the type of distance to similarity conversion |
double[] |
getGradients(Instance instance1,
Instance instance2)
Get the values of the partial derivates for the metric components for a particular instance pair |
double[][] |
getMaxPoints(java.util.HashMap constraintMap,
Instances instances)
Get the maxPoints instances |
java.lang.String[] |
getOptions()
Gets the current settings of WeightedMahalanobisP. |
double[] |
getWeights()
override the parent class methods |
Jama.Matrix |
getWeightsMatrix()
override the parent class methods |
boolean |
isDistanceBased()
The computation of a metric can be either based on distance, or on similarity |
void |
learnMetric(Instances data)
Train the metric |
java.util.Enumeration |
listOptions()
Returns an enumeration describing the available options. |
static void |
main(java.lang.String[] args)
|
double[] |
projectInstance(Instance instance)
given an instance, project it using the weights matrix and store it in the hash |
void |
resetMetric()
Reset all values that have been learned |
void |
setConversionType(SelectedTag conversionType)
Set the type of distance to similarity conversion. |
void |
setOptions(java.lang.String[] options)
Parses a given list of options. |
void |
setWeights(double[] weights)
override the parent class methods |
void |
setWeights(Jama.Matrix weights)
Set the weights |
double |
similarity(Instance instance1,
Instance instance2)
Returns a similarity estimate between two instances. |
double |
similarityNonWeighted(Instance instance1,
Instance instance2)
Returns a similarity estimate between two instances without using the weights. |
Methods inherited from class weka.core.metrics.LearnableMetric |
getExternal, getNumPosDiffInstances, getPosNegDiffInstanceRatio, getTrainable, meanOrMode, normalizeInstanceWeighted, setExternal, setNumPosDiffInstances, setPosNegDiffInstanceRatio, setTrainable, useClassifier, useNoClassifier, usesClassifier |
Methods inherited from class weka.core.metrics.Metric |
forName, getAttrIdxs, getAttrIdxsWithoutLastClass, getAttrIndxs, getClassIndex, getNumAttributes, length, normalizeInstance, setAttrIdxs, setAttrIdxs, setClassIndex |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected double[][] m_weights
protected double[][] m_weightsSquare
protected java.util.HashMap m_projectedInstanceHash
protected double[][] m_maxPoints
protected double[][] m_maxProjPoints
public static final int CONVERSION_LAPLACIAN
public static final int CONVERSION_UNIT
public static final int CONVERSION_EXPONENTIAL
public static final Tag[] TAGS_CONVERSION
protected int m_conversionType
Constructor Detail |
public WeightedMahalanobis(int numAttributes) throws java.lang.Exception
numAttributes
- the number of attributes that the metric will work onpublic WeightedMahalanobis()
public WeightedMahalanobis(int[] _attrIdxs) throws java.lang.Exception
_attrIdxs
- An array containing attribute indeces that will
be used in the metricMethod Detail |
public void resetMetric() throws java.lang.Exception
resetMetric
in class LearnableMetric
java.lang.Exception
public void buildMetric(int numAttributes) throws java.lang.Exception
buildMetric
in class Metric
numAttributes
- the number of attributes that the metric will work on
java.lang.Exception
- if the distance metric has not been
generated successfully.public void buildMetric(int numAttributes, java.lang.String[] options) throws java.lang.Exception
buildMetric
in class Metric
options
- an array of options suitable for passing to setOptions.
May be null.numAttributes
- the number of attributes that the metric will work on
java.lang.Exception
- if the distance metric has not been
generated successfully.public void buildMetric(Instances data) throws java.lang.Exception
buildMetric
in class Metric
data
- instances that the metric will be used on
java.lang.Exception
public double distance(Instance instance1, Instance instance2) throws java.lang.Exception
distance
in class Metric
instance1
- First instance.instance2
- Second instance.
java.lang.Exception
- if distance could not be estimated.public double[] projectInstance(Instance instance)
public double[][] getMaxPoints(java.util.HashMap constraintMap, Instances instances) throws java.lang.Exception
java.lang.Exception
public double distanceNonWeighted(Instance instance1, Instance instance2) throws java.lang.Exception
distanceNonWeighted
in class Metric
instance1
- First instance.instance2
- Second instance.
java.lang.Exception
- if distance could not be estimated.public double similarity(Instance instance1, Instance instance2) throws java.lang.Exception
similarity
in class Metric
instance1
- First instance.instance2
- Second instance.
java.lang.Exception
- if similarity could not be estimated.public double similarityNonWeighted(Instance instance1, Instance instance2) throws java.lang.Exception
similarityNonWeighted
in class Metric
instance1
- First instance.instance2
- Second instance.
java.lang.Exception
- if similarity could not be estimated.public double[] getGradients(Instance instance1, Instance instance2) throws java.lang.Exception
getGradients
in class LearnableMetric
instance1
- the first instanceinstance2
- the first instance
java.lang.Exception
public void learnMetric(Instances data) throws java.lang.Exception
learnMetric
in class LearnableMetric
java.lang.Exception
public void setWeights(Jama.Matrix weights)
public void setWeights(double[] weights)
setWeights
in class LearnableMetric
public double[] getWeights()
getWeights
in class LearnableMetric
public Jama.Matrix getWeightsMatrix()
public Instance createDiffInstance(Instance instance1, Instance instance2)
createDiffInstance
in class LearnableMetric
instance1
- first instanceinstance2
- second instancepublic Jama.Matrix createDiffMatrix(Instance instance1, Instance instance2)
instance1
- first instanceinstance2
- second instancepublic void setConversionType(SelectedTag conversionType)
public SelectedTag getConversionType()
public boolean isDistanceBased()
isDistanceBased
in class Metric
public Instance getCentroidInstance(Instances instances, boolean fastMode, boolean normalized)
getCentroidInstance
in class LearnableMetric
instances
- objects belonging to a clusterfastMode
- whether fast mode should be used for SparseInstancesnormalized
- normalize centroids for SPKMeans
public void setOptions(java.lang.String[] options) throws java.lang.Exception
-N
Normalize the euclidean distance by vectors lengths
-E
Use exponential conversion from distance to similarity
(default laplacian conversion)
-U
Use unit conversion from similarity to distance (dist=1-sim)
(default laplacian conversion)
-R
The metric is trainable and will be trained using the current MetricLearner
(default non-trainable)
setOptions
in interface OptionHandler
options
- the list of options as an array of strings
java.lang.Exception
- if an option is not supportedpublic java.util.Enumeration listOptions()
listOptions
in interface OptionHandler
public java.lang.String[] getOptions()
getOptions
in interface OptionHandler
public java.lang.Object clone()
clone
in class LearnableMetric
public static void main(java.lang.String[] args)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |