📄 smo.java
字号:
*/
public void setExponent(double v) {
if (v == 1.0) {
m_featureSpaceNormalization = false;
m_lowerOrder = false;
}
m_exponent = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String gammaTipText() {
return "The value of the gamma parameter for RBF kernels.";
}
/**
* Get the value of gamma.
*
* @return Value of gamma.
*/
public double getGamma() {
return m_gamma;
}
/**
* Set the value of gamma.
*
* @param v Value to assign to gamma.
*/
public void setGamma(double v) {
m_gamma = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String cTipText() {
return "The complexity parameter C.";
}
/**
* Get the value of C.
*
* @return Value of C.
*/
public double getC() {
return m_C;
}
/**
* Set the value of C.
*
* @param v Value to assign to C.
*/
public void setC(double v) {
m_C = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String toleranceParameterTipText() {
return "The tolerance parameter (shouldn't be changed).";
}
/**
* Get the value of tolerance parameter.
* @return Value of tolerance parameter.
*/
public double getToleranceParameter() {
return m_tol;
}
/**
* Set the value of tolerance parameter.
* @param v Value to assign to tolerance parameter.
*/
public void setToleranceParameter(double v) {
m_tol = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String epsilonTipText() {
return "The epsilon for round-off error (shouldn't be changed).";
}
/**
* Get the value of epsilon.
* @return Value of epsilon.
*/
public double getEpsilon() {
return m_eps;
}
/**
* Set the value of epsilon.
* @param v Value to assign to epsilon.
*/
public void setEpsilon(double v) {
m_eps = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String cacheSizeTipText() {
return "The size of the kernel cache (should be a prime number). Use 0 for full cache.";
}
/**
* Get the size of the kernel cache
* @return Size of kernel cache.
*/
public int getCacheSize() {
return m_cacheSize;
}
/**
* Set the value of the kernel cache.
* @param v Size of kernel cache.
*/
public void setCacheSize(int v) {
m_cacheSize = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String filterTypeTipText() {
return "Determines how/if the data will be transformed.";
}
/**
* Gets how the training data will be transformed. Will be one of
* FILTER_NORMALIZE, FILTER_STANDARDIZE, FILTER_NONE.
*
* @return the filtering mode
*/
public SelectedTag getFilterType() {
return new SelectedTag(m_filterType, TAGS_FILTER);
}
/**
* Sets how the training data will be transformed. Should be one of
* FILTER_NORMALIZE, FILTER_STANDARDIZE, FILTER_NONE.
*
* @param newType the new filtering mode
*/
public void setFilterType(SelectedTag newType) {
if (newType.getTags() == TAGS_FILTER) {
m_filterType = newType.getSelectedTag().getID();
}
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String useRBFTipText() {
return "Whether to use an RBF kernel instead of a polynomial one.";
}
/**
* Check if the RBF kernel is to be used.
* @return true if RBF
*/
public boolean getUseRBF() {
return m_useRBF;
}
/**
* Set if the RBF kernel is to be used.
* @param v true if RBF
*/
public void setUseRBF(boolean v) {
if (v) {
m_featureSpaceNormalization = false;
m_lowerOrder = false;
}
m_useRBF = v;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String featureSpaceNormalizationTipText() {
return "Whether feature-space normalization is performed (only "
+ "available for non-linear polynomial kernels).";
}
/**
* Check whether feature spaces is being normalized.
* @return true if feature space is normalized.
*/
public boolean getFeatureSpaceNormalization() throws Exception {
return m_featureSpaceNormalization;
}
/**
* Set whether feature space is normalized.
* @param v true if feature space is to be normalized.
*/
public void setFeatureSpaceNormalization(boolean v) throws Exception {
if ((m_useRBF) || (m_exponent == 1.0)) {
m_featureSpaceNormalization = false;
} else {
m_featureSpaceNormalization = v;
}
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String lowerOrderTermsTipText() {
return "Whether lower order polyomials are also used (only "
+ "available for non-linear polynomial kernels).";
}
/**
* Check whether lower-order terms are being used.
* @return Value of lowerOrder.
*/
public boolean getLowerOrderTerms() {
return m_lowerOrder;
}
/**
* Set whether lower-order terms are to be used. Defaults
* to false if a linear machine is built.
* @param v Value to assign to lowerOrder.
*/
public void setLowerOrderTerms(boolean v) {
if (m_exponent == 1.0 || m_useRBF) {
m_lowerOrder = false;
} else {
m_lowerOrder = v;
}
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String buildLogisticModelsTipText() {
return "Whether to fit logistic models to the outputs (for proper "
+ "probability estimates).";
}
/**
* Get the value of buildLogisticModels.
*
* @return Value of buildLogisticModels.
*/
public boolean getBuildLogisticModels() {
return m_fitLogisticModels;
}
/**
* Set the value of buildLogisticModels.
*
* @param newbuildLogisticModels Value to assign to buildLogisticModels.
*/
public void setBuildLogisticModels(boolean newbuildLogisticModels) {
m_fitLogisticModels = newbuildLogisticModels;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String numFoldsTipText() {
return "The number of folds for cross-validation used to generate "
+ "training data for logistic models (-1 means use training data).";
}
/**
* Get the value of numFolds.
*
* @return Value of numFolds.
*/
public int getNumFolds() {
return m_numFolds;
}
/**
* Set the value of numFolds.
*
* @param newnumFolds Value to assign to numFolds.
*/
public void setNumFolds(int newnumFolds) {
m_numFolds = newnumFolds;
}
/**
* Returns the tip text for this property
* @return tip text for this property suitable for
* displaying in the explorer/experimenter gui
*/
public String randomSeedTipText() {
return "Random number seed for the cross-validation.";
}
/**
* Get the value of randomSeed.
*
* @return Value of randomSeed.
*/
public int getRandomSeed() {
return m_randomSeed;
}
/**
* Set the value of randomSeed.
*
* @param newrandomSeed Value to assign to randomSeed.
*/
public void setRandomSeed(int newrandomSeed) {
m_randomSeed = newrandomSeed;
}
/**
* Prints out the classifier.
*
* @return a description of the classifier as a string
*/
public String toString() {
StringBuffer text = new StringBuffer();
int printed = 0;
if ((m_classAttribute == null)) {
return "SMO: No model built yet.";
}
try {
text.append("SMO\n\n");
for (int i = 0; i < m_classAttribute.numValues(); i++) {
for (int j = i + 1; j < m_classAttribute.numValues(); j++) {
text.append("Classifier for classes: " +
m_classAttribute.value(i) + ", " +
m_classAttribute.value(j) + "\n\n");
text.append(m_classifiers[i][j]);
if (m_fitLogisticModels) {
text.append("\n\n");
if ( m_classifiers[i][j].m_logistic == null) {
text.append("No logistic model has been fit.\n");
} else {
text.append(m_classifiers[i][j].m_logistic);
}
}
text.append("\n\n");
}
}
} catch (Exception e) {
return "Can't print SMO classifier.";
}
return text.toString();
}
/**
* Main method for testing this class.
*/
public static void main(String[] argv) {
Classifier scheme;
try {
scheme = new SMO();
System.out.println(Evaluation.evaluateModel(scheme, argv));
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -