öğretici: .net ile Apache Spark ve ML .net ile yaklaşım analizi

bu öğreticide, Apache Spark için .net ve .net ML kullanarak çevrimiçi incelemelere ilişkin yaklaşım analizinin nasıl yapılacağı öğretilir. ML .net , ücretsiz, platformlar arası, açık kaynaklı bir makine öğrenimi çerçevesidir. makine öğrenimi algoritmalarının eğitimini ve tahminini ölçeklendirmek için Apache Spark .net ile ML .net kullanabilirsiniz.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Visual Studio ML.NET Model Builder kullanarak bir yaklaşım analiz modeli oluşturun.
  • Apache Spark konsol uygulaması için bir .NET oluşturun.
  • Kullanıcı tanımlı bir işlevi yazın ve uygulayın.
  • Apache Spark konsol uygulaması için bir .NET çalıştırın.

Önkoşullar

  • Daha önce Apache Spark uygulama için bir .NET geliştirmediyse, temel bilgileri öğrenecek başlangıç öğreticisiyle başlayın. Bu öğreticiye devam etmeden önce başlangıç öğreticisine yönelik tüm önkoşulları doldurun.

  • bu öğretici, Visual Studio kullanılabilen bir görsel arabirim olan ML.NET Model Builder (önizleme) kullanır. zaten Visual Studio yoksa, Visual Studio Community sürümünü ücretsiz olarak indirebilirsiniz.

  • ML.NET Model Builder indirin ve yükleyin (önizleme).

  • yelptest.csv indirin ve sarıp İnceleme veri kümelerini yelptrain.csv .

Verileri gözden geçirin

Yelp İnceleme veri kümesi çeşitli hizmetlerle ilgili çevrimiçi sarık İncelemeleri içerir. yelptrain.csv açın ve verilerin yapısına dikkat edin. İlk sütunda İnceleme metni bulunur ve ikinci sütun, yaklaşım puanlarını içerir. Yaklaşım puanı 1 ise, gözden geçirme pozitif olur ve yaklaşım puanı 0 ise, gözden geçirme negatif olur.

Aşağıdaki tabloda örnek veriler yer almaktadır:

Belgemetinmetni Yaklaşım
Wow... Bu yere iner. 1
Crust iyi değil. 0

Machine Learning modelinizi oluşturma

  1. Visual Studio açın ve yeni bir C# konsol uygulaması (.net Core) oluşturun. Projeyi Mlmini model olarak adlandırın.

  2. Çözüm Gezgini, mlmini model projesine sağ tıklayın. > Machine Learning Ekle' yi seçin.

  3. ML.NET Model Builder, Yaklaşım Analizi senaryo kutucuğunu seçin.

  4. Veri Ekle sayfasında yelptrain.csv veri kümesini karşıya yükleyin.

  5. Açılır menüyü tahmin etmek Için sütunlarda yaklaşım ' ı seçin.

  6. Eğitme sayfasında, 60 saniyeye eğitme süresini ayarlayın ve eğitimi Başlat' ı seçin. Ilerlemeniz durumunda eğitimin durumunu fark edin.

  7. Model Oluşturucu tamamlandıktan sonra eğitim sonuçlarını değerlendirin . Aşağıdaki metin kutusuna bir tümcecik yazarak modelinizi deneyebilirsiniz ve çıktıyı görmek için tahmin ' i seçin.

  8. kodu seçin ve ardından ML modelini çözüme eklemek için proje ekle ' yi seçin.

  9. Çözümlerinizi iki projenin eklendiğinden emin olun: Mlmini Modelml. ConsoleApp ve Mlmini Modelml. model.

  10. Mlspark C# projenize çift tıklayın ve aşağıdaki proje başvurusunun eklendiğinden emin olun.

    <ItemGroup>
        <ProjectReference Include="..\MLSparkModelML.Model\MLSparkModelML.Model.csproj" />
    </ItemGroup>
    

Konsol uygulaması oluşturma

Model Oluşturucu sizin için bir konsol uygulaması oluşturur.

  1. Çözüm Gezgini ' de mlmini modelml. Console ' a sağ tıklayın ve NuGet paketlerini yönet' i seçin.

  2. Microsoft. Spark araması yapın ve paketini yükledikten sonra. Microsoft. ML , Model oluşturucu tarafından sizin için otomatik olarak yüklenir.

Mini oturum oluşturma

  1. Mlmini Modelml. ConsoleApp için program. cs dosyasını açın. Bu dosya model Oluşturucu tarafından otomatik olarak oluşturuldu. usingDeyimlerini, Main () yönteminin içeriğini ve CreateSingleDataSample bölgesini silin.

  2. Aşağıdaki ek using deyimlerini programın en üstüne ekleyin . cs:

    using System;
    using System.Collections.Generic;
    using Microsoft.ML;
    using Microsoft.ML.Data;
    using Microsoft.Spark.Sql;
    using MLSparkModelML.Model;
    
  3. Öğesini DATA_FILEPATH yelptest.csv yolu olarak değiştirin.

  4. MainYeni bir oluşturma yöntemine aşağıdaki kodu ekleyin SparkSession . Spark oturumu, veri kümesi ve DataFrame API 'SI ile Spark programlamanın giriş noktasıdır.

    SparkSession spark = SparkSession
         .Builder()
         .AppName(".NET for Apache Spark Sentiment Analysis")
         .GetOrCreate();
    

    Yukarıda oluşturulan Spark nesnesini çağırmak, programınızın tamamında Spark ve dataframe işlevlerine erişmenize olanak tanır.

Veri çerçevesi oluşturma ve konsola yazdırma

yelptest.csv dosyasındaki sarıp İnceleme verilerini bir olarak okuyun DataFrame . Dahil etme header ve inferSchema seçenekleri. headerSeçeneği, yelptest.csv ilk satırını veri yerine sütun adı olarak okur. Bu inferSchema seçenek, verileri temel alan sütun türlerini anlar.

DataFrame df = spark
    .ReadStream()
    .Option("header", true)
    .Option("inferSchema", true)
    .Csv(DATA_FILEPATH);

df.Show();

Kullanıcı tanımlı bir işlevi kaydetme

Verileriniz üzerinde hesaplamalar ve analiz yapmak için Spark uygulamalarında Kullanıcı tanımlı UDF 'ler, Kullanıcı tanımlı işlevler' i kullanabilirsiniz. bu öğreticide, her bir yelp incelemesini değerlendirmek için ML .net 'i UDF ile kullanacaksınız.

MainAdlı BIR UDF 'yi kaydetmek için aşağıdaki kodu yöntemine ekleyin MLudf .

spark.Udf()
    .Register<string, bool>("MLudf", predict);

Bu UDF, giriş olarak bir sarıp İnceleme dizesi alır ve sırasıyla pozitif veya olumsuz yaklaşım için doğru ya da yanlış çıkışları olur. Daha sonraki bir adımda tanımladığınız tahmin () yöntemini kullanır.

UDF 'yi çağırmak için Spark SQL kullanma

artık verilerinizi okuduğunuzdan ve ML eklediyseniz, dataframe 'nizin her satırında yaklaşım analizini çalıştıracak UDF 'yi çağırmak için Spark SQL kullanın. Aşağıdaki kodu yönteminizin içine ekleyin Main :

// Use Spark SQL to call ML.NET UDF
// Display results of sentiment analysis on reviews
df.CreateOrReplaceTempView("Reviews");
DataFrame sqlDf = spark.Sql("SELECT ReviewText, MLudf(ReviewText) FROM Reviews");
sqlDf.Show();

// Print out first 20 rows of data
// Prevent data getting cut off by setting truncate = 0
sqlDf.Show(20, 0, false);

spark.Stop();

Tahmin () yöntemi oluştur

Aşağıdaki kodu yönteminizin önüne ekleyin Main() . Bu kod, model Oluşturucu tarafından Tüketimemodel. cs'de üretilme benzer. Bu yöntemin konsoluna taşınması, uygulamanızı her çalıştırışınızda model yüklemeyi yükler.

private static readonly PredictionEngine<ModelInput, ModelOutput> _predictionEngine;

static Program()
{
    MLContext mlContext = new MLContext();
    ITransformer model = mlContext.Model.Load("MLModel.zip", out DataViewSchema schema);
    _predictionEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(model);
}

static bool predict(string text)
{
    ModelInput input = new ModelInput
    {
        ReviewText = text
    };

    return _predictionEngine.Predict(input).Prediction;
}

Modeli konsol uygulamanıza ekleyin

Çözüm Gezgini, MLModel.zip dosyasını mlmini Modelml. model projesinden kopyalayın ve Mlmini modelml. consoleapp projesine yapıştırın. Mlmini Modelml. ConsoleApp. csproj öğesine bir başvuru otomatik olarak eklenir.

Kodunuzu çalıştırın

spark-submitKodunuzu çalıştırmak için kullanın. Komut istemi 'ni kullanarak konsol uygulamanızın kök klasörüne gidin ve aşağıdaki komutları çalıştırın.

İlk olarak, uygulamanızı temizleyin ve yayımlayın.

dotnet clean
dotnet publish

Ardından konsol uygulamasının Yayımla klasörüne gidin ve aşağıdaki spark-submit komutu çalıştırın. Komutu, Microsoft Spark jar dosyanızın gerçek yoluyla güncelleştirmeyi unutmayın.

%SPARK_HOME%\bin\spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local microsoft-spark-2-4_2.11-1.0.0.jar dotnet MLSparkModelML.ConsoleApp.dll

Kodu alma

Bu öğretici, büyük veri örneği ile yaklaşım Analizi kodla benzerdir.

Sonraki adımlar

Apache Spark için .NET ile yapısal akış yapmayı öğrenmek için sonraki makaleye ilerleyin.