Megosztás a következőn keresztül:


R-oktatóanyag: Adatszolgáltatások létrehozása

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók felügyelt Azure SQL-példány

Az ötrészes oktatóanyag-sorozat harmadik részében megtanulhatja, hogyan hozhat létre funkciókat nyers adatokból egy Transact-SQL függvény használatával. Ezután meghívja ezt a függvényt egy SQL-ben tárolt eljárásból, hogy létrehozhasson egy táblát, amely tartalmazza a funkcióértékeket.

Ebben a cikkben a következőket fogja megismerni:

  • Egyéni függvény módosítása az utazási távolság kiszámításához
  • A funkciók mentése másik egyéni függvény használatával

Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.

A második részben áttekintette a mintaadatokat, és létrehozott néhány diagramot.

A negyedik részben betölti a modulokat, és meghívja a szükséges függvényeket a modell létrehozásához és betanítása egy SQL Server által tárolt eljárás használatával.

Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.

Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.

Tudnivalók a szolgáltatásfejlesztésről

Több adatfeltárás után összegyűjtött néhány megállapítást az adatokból, és készen áll a funkciófejlesztésre. Az elemzési modellek létrehozásának kritikus lépése, hogy értelmes funkciókat hozzon létre a nyers adatokból.

Ebben az adatkészletben a távolságértékek a jelentett mérőtávolságon alapulnak, és nem feltétlenül a földrajzi távolságot vagy a ténylegesen megtett távolságot jelölik. Ezért ki kell számítania a felvételi és a kiszállási pontok közötti közvetlen távolságot, az NYC Taxi adatkészlet forrásában elérhető koordináták felhasználásával. Ezt a Haversine képlet használatával teheti meg egy egyéni Transact-SQL függvényben.

Egy egyéni T-SQL-függvényt, az fnCalculateDistance függvényt fogja használni a távolság kiszámításához a Haversine képlet használatával, és egy második egyéni T-SQL-függvényt( fnEngineerFeatures) használva hozzon létre egy táblázatot, amely tartalmazza az összes funkciót.

A teljes folyamat a következő:

  • A számításokat végrehajtó T-SQL-függvény létrehozása

  • A függvény meghívása a funkcióadatok létrehozásához

  • A szolgáltatásadatok mentése táblázatba

Utazás távolságának kiszámítása az fnCalculateDistance használatával

Az oktatóanyag előkészítése során az fnCalculateDistance függvényt le kellett töltenie és regisztrálnia kellett az SQL Serverrel. Szánjon egy percet a kód áttekintésére.

  1. A Management Studióban bontsa ki a Programozhatóság, a Függvények , majd a Skaláris értékű függvények elemet.

  2. Kattintson a jobb gombbal az fnCalculateDistance elemre, és válassza a Módosítás lehetőséget a Transact-SQL szkript új lekérdezési ablakban való megnyitásához.

    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
    
    • A függvény skaláris értékű függvény, amely egyetlen előre definiált adatértéket ad vissza.

    • A szélességi és hosszúsági értékeket bemenetként fogadja, amelyeket az utazás felvételi és leadási helyszíneiről szerez be. A Haversine képlet radiánokká alakítja a helyeket, és ezekkel az értékekkel kiszámítja a két hely közötti mérföldekben kifejezett közvetlen távolságot.

A funkciók létrehozása az fnEngineerFeatures használatával

Ha a számított értékeket egy olyan táblához szeretné hozzáadni, amely a modell betanításához használható, egy másik függvényt, az fnEngineerFeatures függvényt fogja használni. Az új függvény meghívja a korábban létrehozott T-SQL-függvényt, az fnCalculateDistance függvényt a pick-up és a legördülő helyek közötti közvetlen távolság lekéréséhez.

  1. Szánjon egy percet az egyéni T-SQL-függvény, a fnEngineerFeatures kódjának áttekintésére, amelyet az útmutató előkészítése során létre kellett volna hoznia.

    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
    
    • Ez a táblaértékű függvény, amely több oszlopot használ bemenetként, és több funkcióoszlopot tartalmazó táblát ad ki.

    • Ennek a függvénynek az a célja, hogy új funkciókat hozzon létre a modell létrehozásához.

  2. Annak ellenőrzése érdekében, hogy ez a függvény működik-e, használja azoknak az utaknak a földrajzi távolságának kiszámítására, ahol a mért távolság nullával egyenlő volt, de a felvételi és lerakási helyek eltérőek voltak.

        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
    

    Mint látható, a mérő által jelentett távolság nem mindig felel meg a földrajzi távolságnak. Ezért olyan fontos a funkciófejlesztés. Ezekkel a továbbfejlesztett adatfunkciókkal gépi tanulási modelleket taníthat be R használatával.

Következő lépések

Ebben a cikkben a következőt találja:

  • Egyéni függvény módosítása az utazási távolság kiszámításához
  • A funkciók mentése másik egyéni függvény használatával