ML.NET Показать, какая оценка относится к какому ярлыку - PullRequest
0 голосов
/ 02 октября 2018

В ML.Net я использую классификатор для интерпретации текста.Предсказание имеет столбец оценки как float [] и прогнозируемую метку.Это работает в том смысле, что наивысшая оценка относится к прогнозируемой метке, но остальные оценки просто плавают в произвольном порядке.Как я узнаю, какая оценка относится к какому лейблу?Как я могу узнать, что является вторым по величине взвешенным ярлыком?

Например, я получаю это обратно: 0,00005009 0,00893076 0,1274763 0,6209787 0,2425644

0,6 - это мой предсказанный ярлык, но мне также нужно увидеть, какойпометить 0,24, чтобы я мог понять, почему он запутался.

Метки - это текстовые строки, такие как «Приветствие» или «Шутка», которые были Dictionarized в конвейере, так что, возможно, именно поэтому они не находятся вправильный порядок?

Есть ли способ в ML.Net связать их вместе?Чтобы показать, какая оценка относится к какому ярлыку?

Ответы [ 2 ]

0 голосов
/ 29 июля 2019

Для более новых версий этот будет работать, поскольку TryGetScoreLabelNames был удален:

    var scoreEntries = GetSlotNames(predictor.OutputSchema, "Score");

    ...

    private static List<string> GetSlotNames(DataViewSchema schema, string name)
    {
        var column = schema.GetColumnOrNull(name);

        var slotNames = new VBuffer<ReadOnlyMemory<char>>();
        column.Value.GetSlotNames(ref slotNames);
        var names = new string[slotNames.Length];
        var num = 0;
        foreach (var denseValue in slotNames.DenseValues())
        {
            names[num++] = denseValue.ToString();
        }

        return names.ToList();
    }

(Источник: http://www.programmersought.com/article/3762753756/)

Конечно, это требует дополнительной обработки ошибок и т. Д.

0 голосов
/ 02 октября 2018

Вы можете получить метки, соответствующие баллам, используя следующий код:

string[] scoreLabels;
model.TryGetScoreLabelNames(out scoreLabels);

Дополнительные сведения можно найти здесь и здесь .

Обратите внимание, что это может измениться с выходом API ML.NET 0.6.Эти API будут напрямую предоставлять Schema и позволят получать эту информацию (вместе с другой полезной информацией).Это может быть похоже на то, как сегодня работает TryGetScoreLabelNames.

...