maxWidth = m.length();
}
}
}
} else if (m_Distributions[i][0] instanceof DiscreteEstimator) {
DiscreteEstimator d = (DiscreteEstimator)m_Distributions[i][j];
for (int k = 0; k < d.getNumSymbols(); k++) {
String size = "" + d.getCount(k);
if (size.length() > maxWidth) {
maxWidth = size.length();
}
}
int sum = ("" + d.getSumOfCounts()).length();
if (sum > maxWidth) {
maxWidth = sum;
}
}
}
}
// Check width of class labels
for (int i = 0; i < m_Instances.numClasses(); i++) {
String cSize = m_Instances.classAttribute().value(i);
if (cSize.length() > maxWidth) {
maxWidth = cSize.length();
}
}
// Check width of class priors
for (int i = 0; i < m_Instances.numClasses(); i++) {
String priorP =
Utils.doubleToString(((DiscreteEstimator)m_ClassDistribution).getProbability(i),
maxWidth, 2).trim();
priorP = "(" + priorP + ")";
if (priorP.length() > maxWidth) {
maxWidth = priorP.length();
}
}
if (maxAttWidth < "Attribute".length()) {
maxAttWidth = "Attribute".length();
}
if (maxAttWidth < " weight sum".length()) {
maxAttWidth = " weight sum".length();
}
if (containsKernel) {
if (maxAttWidth < " [precision]".length()) {
maxAttWidth = " [precision]".length();
}
}
maxAttWidth += 2;
temp.append("\n\n");
temp.append(pad("Class", " ",
(maxAttWidth + maxWidth + 1) - "Class".length(),
true));
temp.append("\n");
temp.append(pad("Attribute", " ", maxAttWidth - "Attribute".length(), false));
// class labels
for (int i = 0; i < m_Instances.numClasses(); i++) {
String classL = m_Instances.classAttribute().value(i);
temp.append(pad(classL, " ", maxWidth + 1 - classL.length(), true));
}
temp.append("\n");
// class priors
temp.append(pad("", " ", maxAttWidth, true));
for (int i = 0; i < m_Instances.numClasses(); i++) {
String priorP =
Utils.doubleToString(((DiscreteEstimator)m_ClassDistribution).getProbability(i),
maxWidth, 2).trim();
priorP = "(" + priorP + ")";
temp.append(pad(priorP, " ", maxWidth + 1 - priorP.length(), true));
}
temp.append("\n");
temp.append(pad("", "=", maxAttWidth +
(maxWidth * m_Instances.numClasses())
+ m_Instances.numClasses() + 1, true));
temp.append("\n");
// loop over the attributes
int counter = 0;
for (int i = 0; i < m_Instances.numAttributes(); i++) {
if (i == m_Instances.classIndex()) {
continue;
}
String attName = m_Instances.attribute(i).name();
temp.append(attName + "\n");
if (m_Distributions[counter][0] instanceof NormalEstimator) {
String meanL = " mean";
temp.append(pad(meanL, " ", maxAttWidth + 1 - meanL.length(), false));
for (int j = 0; j < m_Instances.numClasses(); j++) {
// means
NormalEstimator n = (NormalEstimator)m_Distributions[counter][j];
String mean =
Utils.doubleToString(n.getMean(), maxWidth, 4).trim();
temp.append(pad(mean, " ", maxWidth + 1 - mean.length(), true));
}
temp.append("\n");
// now do std deviations
String stdDevL = " std. dev.";
temp.append(pad(stdDevL, " ", maxAttWidth + 1 - stdDevL.length(), false));
for (int j = 0; j < m_Instances.numClasses(); j++) {
NormalEstimator n = (NormalEstimator)m_Distributions[counter][j];
String stdDev =
Utils.doubleToString(n.getStdDev(), maxWidth, 4).trim();
temp.append(pad(stdDev, " ", maxWidth + 1 - stdDev.length(), true));
}
temp.append("\n");
// now the weight sums
String weightL = " weight sum";
temp.append(pad(weightL, " ", maxAttWidth + 1 - weightL.length(), false));
for (int j = 0; j < m_Instances.numClasses(); j++) {
NormalEstimator n = (NormalEstimator)m_Distributions[counter][j];
String weight =
Utils.doubleToString(n.getSumOfWeights(), maxWidth, 4).trim();
temp.append(pad(weight, " ", maxWidth + 1 - weight.length(), true));
}
temp.append("\n");
// now the precisions
String precisionL = " precision";
temp.append(pad(precisionL, " ", maxAttWidth + 1 - precisionL.length(), false));
for (int j = 0; j < m_Instances.numClasses(); j++) {
NormalEstimator n = (NormalEstimator)m_Distributions[counter][j];
String precision =
Utils.doubleToString(n.getPrecision(), maxWidth, 4).trim();
temp.append(pad(precision, " ", maxWidth + 1 - precision.length(), true));
}
temp.append("\n\n");
} else if (m_Distributions[counter][0] instanceof DiscreteEstimator) {
Attribute a = m_Instances.attribute(i);
for (int j = 0; j < a.numValues(); j++) {
String val = " " + a.value(j);
temp.append(pad(val, " ", maxAttWidth + 1 - val.length(), false));
for (int k = 0; k < m_Instances.numClasses(); k++) {
DiscreteEstimator d = (DiscreteEstimator)m_Distributions[counter][k];
String count = "" + d.getCount(j);
temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
}
temp.append("\n");
}
// do the totals
String total = " [total]";
temp.append(pad(total, " ", maxAttWidth + 1 - total.length(), false));
for (int k = 0; k < m_Instances.numClasses(); k++) {
DiscreteEstimator d = (DiscreteEstimator)m_Distributions[counter][k];
String count = "" + d.getSumOfCounts();
temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
}
temp.append("\n\n");
} else if (m_Distributions[counter][0] instanceof KernelEstimator) {
String kL = " [# kernels]";