Aracılığıyla paylaş


R öğreticisi: Veri özellikleri oluşturma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL Yönetilen Örnek

Bu beş bölümden oluşan öğretici serisinin üçüncü bölümünde, bir Transact-SQL işlevi kullanarak ham verilerden özellik oluşturmayı öğreneceksiniz. Ardından bu işlevi sql saklı yordamından çağırarak özellik değerlerini içeren bir tablo oluşturacaksınız.

Bu makalede şunları yapacaksınız:

  • Seyahat mesafesini hesaplamak için özel bir işlevi değiştirme
  • Başka bir özel işlev kullanarak özellikleri kaydetme

Birinci bölümde önkoşulları yüklemiş ve örnek veritabanını geri yüklemişsinizdir.

İkinci bölümde, örnek verileri gözden geçirdiniz ve bazı çizimler oluşturacaksınız.

Dördüncü bölümde, sql server saklı yordamını kullanarak modeli oluşturmak ve eğitmek için modülleri yükleyip gerekli işlevleri çağıracaksınız.

Beşinci bölümde, dördüncü bölümde eğitip kaydettiğiniz modelleri nasıl kullanıma hazır hale getirmeniz gerektiğini öğreneceksiniz.

Beşinci bölümde, dördüncü bölümde eğitip kaydettiğiniz modelleri nasıl kullanıma hazır hale getirmeniz gerektiğini öğreneceksiniz.

Özellik mühendisliği hakkında

Çeşitli veri araştırma turlarından sonra, verilerden bazı içgörüler topladınız ve özellik mühendisliğine geçmeye hazırsınız. Ham verilerden anlamlı özellikler oluşturma işlemi analiz modelleri oluşturmada kritik bir adımdır.

Bu veri kümesinde uzaklık değerleri bildirilen ölçüm uzaklığı temelindedir ve coğrafi uzaklığı veya gerçek mesafeyi temsil etme zorunlu değildir. Bu nedenle, kaynak NYC Taxi veri kümesinde bulunan koordinatları kullanarak teslim alma ve bırakma noktaları arasındaki doğrudan mesafeyi hesaplamanız gerekir. Özel bir Transact-SQL işlevinde Haversine formülünü kullanarak bunu yapabilirsiniz.

Haversine formülünü kullanarak uzaklığı hesaplamak için fnCalculateDistance adlı bir özel T-SQL işlevi kullanacak ve tüm özellikleri içeren bir tablo oluşturmak için fnEngineerFeatures adlı ikinci bir özel T-SQL işlevi kullanacaksınız.

Genel süreç aşağıdaki gibidir:

  • Hesaplamaları gerçekleştiren T-SQL işlevini oluşturma

  • Özellik verilerini oluşturmak için işlevini çağırın

  • Özellik verilerini tabloya kaydetme

fnCalculateDistance kullanarak seyahat mesafesini hesaplama

fnCalculateDistance işlevi, bu öğreticinin hazırlığı kapsamında indirilmiş ve SQL Server'a kaydedilmiş olmalıdır. Kodu gözden geçirmek için bir dakika bekleyin.

  1. Management Studio'da Programlanabilirlik'i genişletin, İşlevler'i ve ardından Skaler değerli işlevler'i genişletin.

  2. fnCalculateDistance öğesine sağ tıklayın ve değiştir'i seçerek Transact-SQL betiğini yeni bir sorgu penceresinde açın.

    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
    
    • İşlev, skaler değerli bir işlevdir ve önceden tanımlanmış türde tek bir veri değeri döndürür.

    • Enlem ve boylam değerlerini, seyahat başlangıç ve bitiş konumlarından elde edilen girdiler olarak alır. Haversine formülü, konumları radyanlara dönüştürür ve bu iki konum arasındaki doğrudan uzaklığı hesaplamak için bu değerleri kullanır.

fnEngineerFeatures kullanarak özellikleri oluşturma

Hesaplanan değerleri modeli eğitmek için kullanılabilecek bir tabloya eklemek için fnEngineerFeatures adlı başka bir işlev kullanacaksınız. Yeni işlev, teslim alma ve bırakma konumları arasındaki doğrudan mesafeyi elde etmek için daha önce oluşturulan fnCalculateDistance T-SQL işlevini çağırır.

  1. Bu kılavuz için hazırlık olarak sizin için oluşturulmuş olması gereken fnEngineerFeatures adlı özel T-SQL işlevinin kodunu gözden geçirmek için bir dakika ayırın.

    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
    
    • Birden çok sütunu giriş olarak alan ve birden çok özellik sütunu içeren bir tablonun çıkışını veren bu tablo değerli işlev.

    • Bu işlevin amacı, model oluştururken kullanılacak yeni özellikler oluşturmaktır.

  2. Bu işlevin çalıştığını doğrulamak için bu işlevi kullanarak tarifeli mesafenin 0 olduğu ancak teslim ve bırakma konumlarının farklı olduğu yolculukların coğrafi uzaklıklarını hesaplayın.

        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
    

    Gördüğünüz gibi ölçüm tarafından bildirilen mesafe her zaman coğrafi mesafeye karşılık gelmez. Özellik mühendisliğinin bu kadar önemli olmasının nedeni budur. R kullanarak makine öğrenmesi modelini eğitmek için bu geliştirilmiş veri özelliklerini kullanabilirsiniz.

Sonraki Adımlar

Bu makalede şunları yapacaksınız:

  • Seyahat mesafesini hesaplamak için özel bir işlev değiştirildi
  • Özellikleri başka bir özel işlev kullanarak kaydetti