Skapa en modell med SynapseML

Den här artikeln visar hur du skapar en maskininlärningsmodell med SynapseML i en Microsoft Fabric notebook-fil. Du skapar en träningspipeline som använder textfeaturisering och LightGBM-regression för att förutsäga bokbetyg utifrån recensionstext. Du lär dig också hur du använder Foundry Tools för fördefinierad attitydanalys.

  • Skapa en Fabric notebook-fil och bifoga ett sjöhus
  • Importera bibliotek och läs in data
  • Skapa och träna en pipeline för funktionsutvinning för text och regression med LightGBM
  • Generera förutsägelser
  • (Valfritt) Köra attitydanalys för Foundry Tools

Förutsättningar

Konfigurera miljön

Importera SynapseML-bibliotek i anteckningsboken och initiera Spark-sessionen.

from pyspark.sql import SparkSession
from synapse.ml.core.platform import *

spark = SparkSession.builder.getOrCreate()

Kontroll: Kör följande cell för att bekräfta att Spark körs:

print(f"Spark version: {spark.version}")

Utdata visar Spark-versionsnumret. Version 3.4 eller senare förväntas. Den exakta versionen beror på din Fabric-körningsmiljö.

Läsa in en datauppsättning

Läs in datasetet med bokrecensioner och dela upp det i tränings- och testmängder. Datamängden innehåller två kolumner: rating (heltal 1–5) och text (granska innehåll).

train, test = (
    spark.read.parquet(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
    )
    .limit(1000)
    .cache()
    .randomSplit([0.8, 0.2])
)

display(train)

Kontroll: Kör följande cell för att bekräfta att data har lästs in korrekt:

print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()

Utdata visar cirka 800 träningsrader och 200 testrader, med två kolumner: rating (heltal) och text (sträng). Det exakta antalet rader varierar eftersom randomSplit är icke-deterministisk.

Skapa träningspipeline

Skapa en pipeline som utför granskningstexten med TextFeaturizer och förutsäger omdömet med LightGBMRegressor.

from pyspark.ml import Pipeline
from synapse.ml.featurize.text import TextFeaturizer
from synapse.ml.lightgbm import LightGBMRegressor

model = Pipeline(
    stages=[
        TextFeaturizer(inputCol="text", outputCol="features"),
        LightGBMRegressor(featuresCol="features", labelCol="rating", dataTransferMode="bulk")
    ]
).fit(train)

Kontroll: Kör följande cell för att bekräfta att pipelinen har tränats:

print(f"Pipeline stages: {len(model.stages)}")
print(f"Stage 1: {type(model.stages[0]).__name__}")
print(f"Stage 2: {type(model.stages[1]).__name__}")

Resultatet visar två steg i pipelineprocessen: TextFeaturizerModel och LightGBMRegressionModel.

Förutsäga utdata från testdata

transform Anropa metoden i modellen för att förutsäga klassificeringar för testdata och visa resultatet.

predictions = model.transform(test)
display(predictions)

Kontroll: Kör följande cell för att bekräfta att förutsägelser har genererats:

print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)

Utdata visar fyra kolumner (rating, text, features, prediction) och cirka 200 rader. Kolumnen prediction innehåller modellens förutsagda klassificering som en flyttal. Jämför den med den faktiska rating kolumnen för att utvärdera modellprestanda.

(Valfritt) Använda Foundry Tools för attitydanalys

Om du vill analysera attityden i dina bokrecensioner kan du använda SynapseML:s integrering med Foundry Tools. Det här steget använder den fördefinierade TextSentiment modellen för att klassificera textsentiment, vilket är en annan uppgift än klassificeringsförutsägelse i föregående steg.

Viktigt!

Det här steget kräver en Foundry Tools-nyckel som lagras i Azure Key Vault. Om du hoppade över dessa förutsättningar, slutför dem först eller hoppa över det här avsnittet.

Kör följande kod med dessa ersättningar:

  • Ersätt <your-secret-name> med namnet på din Foundry Tools-nyckelhemlighet i Key Vault.
  • Ersätt <your-key-vault-name> med namnet på din Azure Key Vault-instans.
from synapse.ml.services import TextSentiment
from synapse.ml.core.platform import find_secret

sentiment_model = TextSentiment(
    textCol="text",
    outputCol="sentiment",
    subscriptionKey=find_secret("<your-secret-name>", "<your-key-vault-name>")
).setLocation("eastus")

sentiment_results = sentiment_model.transform(test)
display(sentiment_results)

Note

Uppdatera värdet setLocation om din Foundry Tools-resurs finns i en annan Azure region (till exempel "westus2" eller "westeurope").

Kontroll: Kör följande cell för att bekräfta att attitydanalysen har slutförts:

print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)

Utdata visar tre kolumner (rating, text, sentiment). Kolumnen sentiment innehåller strukturerade resultat med etiketter som positive, negative, neutraleller mixed för varje granskning.

Felsökning

Problematik Orsak Åtgärd
JAVA_GATEWAY_EXITED fel när du skapar SparkSession Köra kod utanför en Fabric-notebook Kör den här koden i en Fabric notebook-fil där Spark är förkonfigurerat. Kör inte lokalt utan en Spark-installation.
Could not find <secret> in keyvault <vault> Key Vault namn eller hemligt namn är felaktigt, eller så saknar notebook-identiteten åtkomst Kontrollera att namnen matchar exakt. I Azure-portalen bekräftar du att identiteten för din Fabric-arbetsyta har behörigheten Get för Key Vault-hemligheter.
TextFeaturizer returnerar tomma funktioner Indatatextkolumnen är null eller tom Sök efter null-värden: train.filter(train.text.isNull()).count() – ta bort null före träning.
randomSplit returnerar oväntade radantal Sparks slumpmässiga delning är icke-deterministisk Detta är ett förväntat beteende. Ange ett frö för reproducerbarhet: .randomSplit([0.8, 0.2], seed=42)
AnalysisException: Path does not exist Nätverksproblem vid åtkomst till exempeldatabloben Verifiera nätverksanslutningen. I Fabric bekräftar du att arbetsytan kan komma åt externa Azure Blob Storage URL:er.
Foundry Tools returnerar 401 eller 403 Ogiltig eller utgången prenumerationsnyckel Generera en ny nyckel i Azure-portalen under resursen Foundry Tools Keys och Endpoint. Uppdatera Key Vault-hemligheten.
setLocation returnerar 404 Regionen matchar inte Ange platsen så att den matchar den Azure region där du skapade din Foundry Tools-resurs.

Rensa resurser

Om du har skapat Azure resurser för det valfria steget Foundry Tools och inte längre behöver dem tar du bort dem för att undvika avgifter:

  1. I Azure portalen tar du bort foundry Tools-resursen för flera tjänster.
  2. Ta bort Key Vault-instansen i Azure portalen.
  3. I din Fabric arbetsyta tar du bort testanteckningsboken om du inte längre behöver den.