

def pretty_format(self, show_percents=False, values_in_chart=True, truncate=None, sort_by_count=False):
    '\n        :return: A multi-line string representation of this confusion matrix.\n        :type truncate: int\n        :param truncate: If specified, then only show the specified\n            number of values.  Any sorting (e.g., sort_by_count)\n            will be performed before truncation.\n        :param sort_by_count: If true, then sort by the count of each\n            label in the reference data.  I.e., labels that occur more\n            frequently in the reference label will be towards the left\n            edge of the matrix, and labels that occur less frequently\n            will be towards the right edge.\n\n        @todo: add marginals?\n        '
    confusion = self._confusion
    values = self._values
    if sort_by_count:
        values = sorted(values, key=(lambda v: (- sum(self._confusion[self._indices[v]]))))
    if truncate:
        values = values[:truncate]
    if values_in_chart:
        value_strings = [('%s' % val) for val in values]
    else:
        value_strings = [str((n + 1)) for n in range(len(values))]
    valuelen = max((len(val) for val in value_strings))
    value_format = (('%' + repr(valuelen)) + 's | ')
    if show_percents:
        entrylen = 6
        entry_format = '%5.1f%%'
        zerostr = '     .'
    else:
        entrylen = len(repr(self._max_conf))
        entry_format = (('%' + repr(entrylen)) + 'd')
        zerostr = ((' ' * (entrylen - 1)) + '.')
    s = ''
    for i in range(valuelen):
        s += ((' ' * valuelen) + ' |')
        for val in value_strings:
            if (i >= (valuelen - len(val))):
                s += val[((i - valuelen) + len(val))].rjust((entrylen + 1))
            else:
                s += (' ' * (entrylen + 1))
        s += ' |\n'
    s += ('%s-+-%s+\n' % (('-' * valuelen), ('-' * ((entrylen + 1) * len(values)))))
    for (val, li) in zip(value_strings, values):
        i = self._indices[li]
        s += (value_format % val)
        for lj in values:
            j = self._indices[lj]
            if (confusion[i][j] == 0):
                s += zerostr
            elif show_percents:
                s += (entry_format % ((100.0 * confusion[i][j]) / self._total))
            else:
                s += (entry_format % confusion[i][j])
            if (i == j):
                prevspace = s.rfind(' ')
                s = (((s[:prevspace] + '<') + s[(prevspace + 1):]) + '>')
            else:
                s += ' '
        s += '|\n'
    s += ('%s-+-%s+\n' % (('-' * valuelen), ('-' * ((entrylen + 1) * len(values)))))
    s += '(row = reference; col = test)\n'
    if (not values_in_chart):
        s += 'Value key:\n'
        for (i, value) in enumerate(values):
            s += ('%6d: %s\n' % ((i + 1), value))
    return s

dataset/ETHPy150Open nltk/nltk/nltk/metrics/confusionmatrix.py ConfusionMatrix.pretty_format/original