Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Managed Instance
Из третьей части этой серии из пяти учебников вы узнаете, как создавать характеристики на основе необработанных данных с помощью функции Transact-SQL. Затем вы вызовите эту функцию из хранимой процедуры SQL, чтобы создать таблицу, содержащую значения характеристик.
Работая с этой статьей, вы узнаете о следующем.
- Изменение пользовательской функции для вычисления расстояния поездки
- Сохранение признаков с помощью другой пользовательской функции
В первой части были установлены необходимые компоненты и восстановлена демонстрационная база данных.
Во второй части вы узнали, как проверить пример данных и создать графики.
В четвертой части вы научитесь загружать модули и вызывать необходимые функции для создания и обучения модели с помощью хранимой процедуры SQL Server.
Из пятой части вы узнаете, как ввести в эксплуатацию модели, которые были обучены и сохранены в соответствии с инструкциями в четвертой части.
Из пятой части вы узнаете, как ввести в эксплуатацию модели, которые были обучены и сохранены в соответствии с инструкциями в четвертой части.
Сведения о формировании признаков
После нескольких циклов исследования данных вы собрали определенной объем аналитической информации и готовы переходить к формированию характеристик. Процесс создания значимых признаков на основе необработанных данных — важнейший этап при создании аналитических моделей.
В этом наборе данных значения расстояний основаны на показаниях счетчиков и необязательно отражают расстояние по карте или фактическое расстояние поездки. Поэтому необходимо вычислить прямое расстояние между местами посадки и высадки с помощью координат, доступных в исходном наборе данных по работе такси в Нью-Йорке. Это можно сделать с помощью формулы гаверсинуса в пользовательской функции Transact-SQL.
Вы используете пользовательскую функцию T-SQL fnCalculateDistanceдля вычисления расстояния по формуле гаверсинуса, а затем другую пользовательскую функцию T-SQL fnEngineerFeaturesдля создания таблицы, содержащей все характеристики.
В общем виде процесс выглядит так:
создание функции T-SQL, выполняющей вычисления;
вызов функции для создания данных признаков;
сохранение данных признаков в таблице.
Вычисление расстояния поездки с помощью функции fnCalculateDistance
Функция fnCalculateDistance должна быть загружена и зарегистрирована в SQL Server в рамках подготовки к работе с этим руководством. Вкратце изучите код.
В Среде Management Studio разверните узел Programmability, разверните функции искалярные функции.
Щелкните правой кнопкой мыши функцию fnCalculateDistance, а затем выберите команду Изменить, чтобы открыть скрипт Transact-SQL в новом окне запроса.
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2 float, @Long2 float) -- User-defined function that calculates the direct distance between two geographical coordinates. RETURNS float AS BEGIN DECLARE @distance decimal(28, 10) -- Convert to radians SET @Lat1 = @Lat1 / 57.2958 SET @Long1 = @Long1 / 57.2958 SET @Lat2 = @Lat2 / 57.2958 SET @Long2 = @Long2 / 57.2958 -- Calculate distance SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) * COS(@Long2 - @Long1)) --Convert to miles IF @distance <> 0 BEGIN SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) / @distance); END RETURN @distance END GOФункция является скалярной и возвращает одно значение предопределенного типа.
Она принимает в качестве входных значений широту и долготу мест посадки и высадки. Формула гаверсинуса преобразует координаты в радианы и использует полученные значения для вычисления прямого расстояния в километрах между этими двумя местами.
Формирование признаков с помощью функции fnEngineerFeatures
Для добавления вычисленных значений в таблицу, которую можно использовать для обучения модели, применяется другая функция: fnEngineerFeatures. Эта новая функция вызывает ранее созданную функцию T-SQL fnCalculateDistance для получения прямого расстояния между местами посадки и высадки.
Изучите код пользовательской функции T-SQL fnEngineerFeatures, которая должна была быть создана для вас в рамках подготовки к работе с этим пошаговым руководством.
CREATE FUNCTION [dbo].[fnEngineerFeatures] ( @passenger_count int = 0, @trip_distance float = 0, @trip_time_in_secs int = 0, @pickup_latitude float = 0, @pickup_longitude float = 0, @dropoff_latitude float = 0, @dropoff_longitude float = 0) RETURNS TABLE AS RETURN ( -- Add the SELECT statement with parameter references here SELECT @passenger_count AS passenger_count, @trip_distance AS trip_distance, @trip_time_in_secs AS trip_time_in_secs, [dbo].[fnCalculateDistance](@pickup_latitude, @pickup_longitude, @dropoff_latitude, @dropoff_longitude) AS direct_distance ) GOЭта функция с табличным значением принимает несколько столбцов в качестве входных данных и выводит таблицу с несколькими столбцами признаков.
Назначение этой функции — создать признаки, которые будут использоваться при построении модели.
Чтобы убедиться в том, что эта функция работает, вычислите с ее помощью географическое расстояние поездок, для которых расстояние по счетчику было равно 0, но места посадки и высадки были разными.
SELECT tipped, fare_amount, passenger_count,(trip_time_in_secs/60) as TripMinutes, trip_distance, pickup_datetime, dropoff_datetime, dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) AS direct_distance FROM nyctaxi_sample WHERE pickup_longitude != dropoff_longitude and pickup_latitude != dropoff_latitude and trip_distance = 0 ORDER BY trip_time_in_secs DESCКак видите, расстояние по счетчику не всегда соответствует географическому расстоянию. Вот почему формирование характеристик имеет такое важное значение. Эти улучшенные признаки можно использовать для обучения модели машинного обучения с помощью языка R.
Следующие шаги
Работая с этой статьей, вы выполните следующие задачи:
- Изменение пользовательской функции для вычисления расстояния поездки
- Сохранение признаков с помощью другой пользовательской функции