ExpressionEstimator Класс

Определение

Этот оценщик применяет предоставленное пользователем выражение (указанное в виде строки) к входным значениям столбцов для создания новых значений выходного столбца.

public sealed class ExpressionEstimator : Microsoft.ML.IEstimator<Microsoft.ML.Transforms.ExpressionTransformer>
type ExpressionEstimator = class
    interface IEstimator<ExpressionTransformer>
Public NotInheritable Class ExpressionEstimator
Implements IEstimator(Of ExpressionTransformer)
Наследование
ExpressionEstimator
Реализации

Комментарии

Характеристики оценки

Должен ли этот оценщик просмотреть данные для обучения его параметров? No
Тип данных входного столбца float, double, int, long, bool или text.
Тип данных выходного столбца Может быть float, double, int, long, bool или text, в зависимости от выражения.

Результирующий expressionTransformer создает новый столбец с именем, указанным в параметрах имени выходного столбца, где выражение применяется к входным значениям. В большинстве входных столбцов может быть тип VectorDataViewType, и если входные данные содержат векторный столбец, выражение вычисляется независимо от каждого элемента вектора, чтобы создать векторные выходные данные с той же длиной, что и входные данные.

Язык выражений

Язык оценки выражений должен быть удобным для широкого круга пользователей. Он разделяет множество сходств с некоторыми популярными языками. Он учитывает регистр, поддерживает несколько типов и имеет широкий набор операторов и функций. Это чисто функционально, в том смысле, что в языке отсутствуют изменяемые значения или мутирующие операции. Он не имеет никакого механизма исключения, а не создает значения NA, если нормальное значение не подходит. Он статически типизированный, но все типы выводятся компилятором.

Синтаксис

Синтаксис лямбда-кода состоит из списка параметров, за которым следует двоеточие (:) или стрелка (=>), за которым следует выражение. Список параметров может быть одним идентификатором или разделенным запятыми списком одного или нескольких идентификаторов, окруженных скобками.

лямбда::

  • список параметров : выражение
  • параметр-list => выражение

параметр-list:

  • идентификатор
  • (имена параметров)

имена параметров:

  • идентификатор
  • идентификатор , имена параметров

Выражение может использовать параметры, литералы, операторы, выражения с выражениями и функции.

Literals

  • Логические литералы являются истинными и ложными.
  • Целые литералы могут быть десятичными или шестнадцатеричными (например, 0x1234ABCD). Они могут быть суффиксированы с вами или U, указывая без знака, а также l или L, указывая длину (Int64). Использование вас или U редко и влияет только на повышение определенных 32-разрядных шестнадцатеричных значений, определяющее, считается ли константа отрицательным значением Int32 или положительным значением Int64.
  • Литералы с плавающей запятой используют стандартный синтаксис, включая экспоненциальную нотацию (123.45e-37). Они могут быть суффиксированы с f или F, указывая одну точность или d или D, указывающую двойную точность. В отличие от C#, точность по умолчанию литерала с плавающей запятой является одной точностью. Чтобы указать двойную точность, добавьте d или D.
  • Текстовые литералы заключены в двойные кавычки и поддерживают стандартные механизмы escape-обхода.

Operators

Операторы языка выражений перечислены в следующей таблице в порядке подготовки. Если не указано иное, двоичные операторы остаются ассоциативными и распространяют значения NA (если одно из операндов равно NA, результатом является NA). Как правило, переполнение целых значений создает значение NA, а переполнение значений с плавающей запятой приводит к бесконечности.

Оператор Meaning Arity Comments
​? : условный Тернарий Условие выражения ? value1: value2 разрешает значение value1, если условие имеет значение true и значение2, если условие равно false. Условие должно быть логическим, а значение1 и значение2 должны иметь совместимый тип.
​?? объединение Двоичный файл Выражение x ?? y разрешается в x, если x не является na, и разрешает значение y в противном случае. Операнды должны быть как синглами, так и обоими двойными. Этот оператор является правильным ассоциативным.
| | или логические или Двоичный файл Операнды и результат являются логическими. Если один операнд имеет значение true, результат имеет значение true, в противном случае — значение false.
&& и логические и Двоичный файл Операнды и результат являются логическими. Если один операнд имеет значение false, результат имеет значение false, в противном случае — значение true.
​==, =
!=, <>
<, <=
>, >=
Равно
не равно
меньше или равно
больше или равно
Несколько — Операторы сравнения являются многоармиями, то есть они могут применяться к двум или нескольким операндам. Например, a == b == c приводит к значению true, если a, b и c имеют то же значение. Оператор не равный требует, чтобы все операнды были разными, поэтому 1 != 2 != 1 имеет значение false. Чтобы проверить, является ли x не отрицательным, но менее 10, используйте 0 <= x < 10. Нет необходимости писать 0 <= x &&x < 10, и делать это не будет также. Операторы, перечисленные в одной строке, могут объединяться в одном выражении, поэтому > b >= c является законным, но b >< = c не является.
— Равные и не равные применяются к любому типу операнда, а упорядоченные операторы требуют числовых операндов.
​+ - добавление и вычитание Двоичный файл Числовое добавление и вычитание с распространением NA.
* / % умножение, деление и модулы Двоичный файл Числовое умножение, деление и модулу с распространением NA.
​- ! not числовое отрицание и логические не Унарный Это унарные операторы префикса, отрицание (-), требующее числового операнда, а не (!), требующего логического операнда.
​^ питание Двоичный файл Это правильное ассоциативное экспонентация. Для него требуются числовые операнды. Для целых операндов 0^0 производится 1.
​( ) группирование с скобками Унарный Стандартное значение.

Выражение с выражением

Синтаксис выражения with-expression:

with-expression:

  • with( assignment-list ; expression )

assignment-list:

  • задание
  • назначение , список назначений

назначение:

  • выражение идентификатора =

Выражение with вводит одно или несколько именованных значений. Например, следующее выражение преобразует температуру celcius в fahrenheit, а затем создает сообщение на основе того, слишком низкая или высокая.

c => with(f = c * 9 / 5 + 32 ; f < 60 ? "Too Cold!" : f > 90 ? "Too Hot!" : "Just Right!")

Выражение для одного назначения может ссылать на идентификаторы, представленные предыдущими назначениями, как в этом примере, возвращающее значение -1, 0 или 1 вместо сообщений:

c : with(f = c * 9 / 5 + 32, cold = f < 60, hot = f > 90 ; -float(cold) + float(hot))

Как показано выше, выражение с выражением полезно при необходимости несколько раз в большем выражении. Это также полезно при работе с сложными или значительными константами:

    ticks => with(
        ticksPerSecond = 10000000L,
        ticksPerHour = ticksPerSecond \* 3600,
        ticksPerDay = ticksPerHour \* 24,
        day = ticks / ticksPerDay,
        dayEpoch = 1 ;
        (day + dayEpoch) % 7)

Это вычисляет день недели от числа галок (как Int64) с стандартной эпохи .Net DateTime (01/01/0001 в идеализованном григорианском календаре). Назначения используются для числа клещей в секунду, количество клещей в час, количество клещей в год, а также день недели для эпохи. В этом примере мы хотим сопоставить воскресенье с нулем, поэтому, так как эпоха является понедельником, мы устанавливаем dayEpoch на 1. Если эпоха была изменена или мы хотели сопоставить другой день недели с нулем, мы просто изменим деньEpoch. Обратите внимание, что ticksPerSecond определяется как 100000000L, чтобы сделать его значение int64 (8 байтового целого числа). Без суффикса L ticksPerDay переполняет диапазон Int32.

Functions

Преобразование выражения поддерживает множество полезных функций.

Общие унарные функции, которые могут принимать операнду любого типа, перечислены в следующей таблице.

Имя Значение Комментарии
isna тест для na Возвращает логическое значение, указывающее, является ли операнда значением NA.
na значение na Возвращает значение NA того же типа, что и операнд (с плавающей или двойной). Обратите внимание, что это не вычисляет операнду, он использует операнду только для определения типа возвращаемого НС, и это определение происходит во время компиляции.
по умолчанию значение по умолчанию Возвращает значение по умолчанию того же типа, что и операнды. Например, чтобы сопоставить значения NA со значениями по умолчанию, используйте x ?? default(x). Обратите внимание, что это не вычисляет операнду, он использует операнду только для определения типа возвращаемого значения по умолчанию, и это определение происходит во время компиляции. Для числовых типов значение по умолчанию равно нулю. Для логического значения значение по умолчанию равно false. Для текста значение по умолчанию пусто.

Функции унарного преобразования перечислены в следующей таблице. Операнд NA создает НС или создает исключение, если тип не поддерживает его. Преобразование, которое не выполняется, или переполнение также приводит к НС или исключению. Наиболее распространенным случаем этого является преобразование из текста, которое использует стандартный анализ преобразования. При преобразовании из значения с плавающей запятой (float или double) в целочисленное значение (Int32 или Int64) преобразование выполняет операцию усечения (округление к нулю).

Имя Значение Комментарии
bool преобразование в логический Операнд должен быть текстом или логическим.
int преобразование в Int32 Входные данные могут быть любого типа.
длинный преобразование в Int64 Входные данные могут быть любого типа.
single, float преобразование в Single Входные данные могут быть любого типа.
double преобразование в Double Входные данные могут быть любого типа.
текст преобразование в текст Входные данные могут быть любого типа. Это создает текстовое представление по умолчанию.

Унарные функции, требующие числовых операндов, перечислены в следующей таблице. Тип результата совпадает с типом операнда. Значение операнда NA создает NA.

Имя Значение Комментарии
abs абсолютное значение Создает абсолютное значение операнда.
знак знак (-1, 0, 1) Производит значение -1, 0 или 1 в зависимости от того, является ли операнд отрицательным, нулевым или положительным.

Двоичные функции, требующие числовых операндов, перечислены в следующей таблице. Если типы операндов не совпадают, операнды повышаются до соответствующего типа. Тип результата совпадает с типом продвигаемого операнда. Значение операнда NA создает NA.

Имя Значение Комментарии
min минимальное значение Создает минимум операндов.
макс. максимум Создает максимум операндов.

Унарные функции, требующие операнда с плавающей запятой, перечислены в следующей таблице. Тип результата совпадает с типом операнда. Переполнение производит бесконечность. Недопустимые входные значения создают NA.

Имя Значение Комментарии
sqrt квадратный корень Отрицательные операнды производят NA.
усечение, усечение усечение в целое число Округляется до нуля до ближайшего целого значения.
пол пол Округляется к отрицательной бесконечности до ближайшего целочисленного значения.
ceil, потолок потолок Округляется к положительному бесконечности до ближайшего целочисленного значения.
раунд беспристрастное округление Округляет до ближайшего целочисленного значения. Если операнд находится на полпути между двумя целыми значениями, это создает даже целое число.
exp экспоненциальный Поднимает e к операнду.
ln, log логарифм Создает естественный (базовый e) логарифм. Существует также две версии журнала операнда для использования другой базы.
deg, градусы радианы в градусах Карты от радианов к градусам.
rad, радианы градусы радианам Карты от градусов к радианам.
грех, грех синус Принимает синус угла. Функция греха предполагает, что операнд находится в радианах, в то время как греховная функция предполагает, что операнда находится в градусах.
cos, cosd cosine Принимает косинус угла. Функция cos предполагает, что операнд находится в радианах, а функция cosd предполагает, что операнд находится в градусах.
tan, tand тангенс Принимает тангенс угла. Функция загар предполагает, что операнду находится в радианах, а функция танда предполагает, что операнд находится в градусах.
синх гиперболический синус Принимает гиперболический синус своего операнда.
cosh гиперболический косинус Принимает гиперболический косин своего операнда.
танх гиперболический тангенс Принимает гиперболический тангенс своего операнда.
asin инверсный синус Принимает обратный синус своего операнда.
acos обратная косинус Принимает обратный косин своего операнда.
atan инверсный тангенс Принимает обратный тангенс своего операнда.

Двоичные функции, требующие операндов с плавающей запятой, перечислены в следующей таблице. Если типы операндов не совпадают, операнды повышаются до соответствующего типа. Тип результата совпадает с типом продвигаемого операнда. Значение операнда NA создает NA.

Имя Значение Комментарии
журнал логарифм с заданной базой Второй операнд является базой. Первое — это значение для принятия логарифма.
atan2, atanyx определение угла Определяет угол между -pi и pi из заданных значений y и x. Обратите внимание, что y является первым операндом.

Текстовые функции перечислены в следующей таблице.

Имя Значение Комментарии
len(x) длина текста Операнд должен быть текстом. Результатом является I4, указывающий длину операнда. Если операнд является NA, результатом является NA.
lower(x), upper(x) нижний или верхний регистр Сопоставляет текст с нижним или верхним регистром.
left(x, k), right(x, k) подстрока Первый операнд должен быть текстом, а второй операнд должен быть Int32. Если второй операнд является отрицательным, он рассматривается как смещение от конца текста. Затем этот скорректированный индекс зацепляется до 0 до len(x). Результатом является символы слева или справа от результирующей позиции.
mid(x, a, b) подстрока Первый операнд должен быть текстом, а остальные два операнда должны быть Int32. Индексы преобразуются так же, как и для левых и правых функций: отрицательные значения обрабатываются как смещения от конца текста; эти скорректированные индексы зажаты на 0 до len(x). Второй зажатый индекс также зажат ниже к первому зажатом индексу. Результатом является символы между этими двумя зажатыми индексами.
concat(x1, x2, ..., xn) объединение Это принимает произвольное число операндов (включая ноль). Все операнды должны быть текстом. Результатом является объединение всех операндов в порядке.

Методы

Имя Описание
Fit(IDataView)

Этот оценщик применяет предоставленное пользователем выражение (указанное в виде строки) к входным значениям столбцов для создания новых значений выходного столбца.

GetOutputSchema(SchemaShape)

Этот оценщик применяет предоставленное пользователем выражение (указанное в виде строки) к входным значениям столбцов для создания новых значений выходного столбца.

Методы расширения

Имя Описание
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Добавьте "контрольную точку кэширования" в цепочку оценщика. Это гарантирует, что нижестоящий оценщик будет обучен по кэшированным данным. Рекомендуется использовать контрольную точку кэширования перед обучением, которые принимают несколько передач данных.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

При оценке возвращает объект оболочки, который вызовет делегат после Fit(IDataView) вызова. Часто важно для оценки возвращать сведения о том, что было подходяще, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако, в то же время, IEstimator<TTransformer> часто формируются в конвейеры с множеством объектов, поэтому нам может потребоваться построить цепочку оценщиков с помощью EstimatorChain<TLastTransformer> того, где оценка, для которой мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова.

Применяется к

См. также раздел