Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
Azure Machine Learning SDK v1 för Python
Viktigt!
Den här artikeln innehåller information om hur du använder Azure Machine Learning SDK v1. SDK v1 är inaktuell från och med den 31 mars 2025. Stödet för det upphör den 30 juni 2026. Du kan installera och använda SDK v1 fram till det datumet. Dina befintliga arbetsflöden med SDK v1 fortsätter att fungera efter supportdatumet. De kan dock utsättas för säkerhetsrisker eller förändringar som bryter kompatibiliteten vid arkitektoniska förändringar i produkten.
Vi rekommenderar att du övergår till SDK v2 före den 30 juni 2026. Mer information om SDK v2 finns i Vad är Azure Machine Learning CLI och Python SDK v2? och SDK v2-referensen.
I den här artikeln beskrivs alternativ för att konfigurera delning av träningsdata och valideringsdata tillsammans med korsvalideringsinställningar för dina automatiserade ML-experiment (automatiserad maskininlärning). När du använder automatiserad maskininlärning för att skapa flera maskininlärningsmodeller i Azure Machine Learning måste varje delkörning verifiera den relaterade modellen genom att beräkna kvalitetsmåtten för modellen, till exempel noggrannhet eller viktad AUC (område under kurvan). Dessa mått beräknas genom att jämföra förutsägelserna som gjorts med varje modell med verkliga etiketter från tidigare observationer i valideringsdata. Automatiserade ML-experiment utför modellverifiering automatiskt.
I följande avsnitt beskrivs hur du kan anpassa valideringsinställningar med Azure Machine Learning Python SDK. Mer information om hur mått beräknas baserat på valideringstyp finns i avsnittet Ange måttberäkning för korsvalidering . Om du är intressant i en upplevelse med låg kod eller ingen kod kan du läsa Skapa dina automatiserade ML-experiment i Azure Machine Learning-studio.
Förutsättningar
En Azure Machine Learning-arbetsyta. Information om hur du skapar arbetsytan finns i Skapa arbetsyteresurser.
Kunskaper om hur du konfigurerar ett automatiserat ML-experiment med Azure Machine Learning SDK. Om du vill se de grundläggande designmönstren för automatiserade maskininlärningsexperiment slutför du självstudien Träna en objektidentifieringsmodell eller guiden Konfigurera AutoML-träning med Python .
Förståelse för delningar av tränings-/valideringsdata och korsvalidering som maskininlärningskoncept. En förklaring på hög nivå finns i följande artiklar:
Viktigt!
Python-kommandona i den här artikeln kräver den senaste azureml-train-automl paketversionen.
-
Installera det senaste
azureml-train-automlpaketet i din lokala miljö. - Mer information om det senaste
azureml-train-automlpaketet finns i viktig information.
Ange standarddatadelningar och korsvalidering i maskininlärning
Om du vill ange standarddatadelningar och korsvalidering i maskininlärning använder du objektet AutoMLConfig Class för att definiera dina experiment- och träningsinställningar. I följande exempel definieras endast de obligatoriska parametrarna. Parametrarna n_cross_validations och validation_data ingår inte.
Kommentar
I prognosscenarier stöds inte standarddatadelningar och korsvalidering.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'Class'
)
Om du inte uttryckligen anger en validation_data parameter eller n_cross_validations parameter tillämpar automatiserad ML standardtekniker beroende på antalet rader som anges i den enskilda datamängden training_data.
| Träningsdatastorlek | Valideringsteknik |
|---|---|
| Större än 20 000 rader | Segmentering av tränings- och valideringsdata används. Standardvärdet är att ta 10 % av den inledande träningsdatauppsättningen som verifieringsuppsättning. Verifieringsuppsättningen används i sin tur för måttberäkning. |
| Mindre än 20 000 rader | Metoden för korsvalidering tillämpas. Standardantalet vikningar beror på antalet rader. – Om datamängden är mindre än 1 000 rader används 10 delningar. - Om raderna är mellan 1 000 och 20 000 används tre veck. |
Tillhandahåll valideringsdatauppsättning
Du har två alternativ för att tillhandahålla valideringsdata. Du kan börja med en enda datafil och dela upp den i träningsdata och valideringsdatauppsättningar, eller så kan du ange en separat datafil för valideringsuppsättningen. Hur som helst tilldelar parametern validation_data i objektet AutoMLConfig vilka data som ska användas som verifieringsuppsättning. Den här parametern accepterar endast datauppsättningar i form av en Azure Machine Learning-datauppsättning eller pandas-dataram.
Här följer några andra överväganden för att arbeta med valideringsparametrar:
- Du kan bara ange en valideringsparameter, antingen parametern
validation_dataeller parameternn_cross_validations, men inte båda. - När du använder parametern
validation_datamåste du också ange parametrarnatraining_dataochlabel_column_name.
I följande exempel definieras uttryckligen vilken del av som dataset ska användas för träning (training_data) och för validering (validation_data):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
training_data, validation_data = dataset.random_split(percentage=0.8, seed=1)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = training_data,
validation_data = validation_data,
label_column_name = 'Class'
)
Ange storlek för valideringsdatauppsättning
När du anger valideringsuppsättningens storlek anger du bara en enda datauppsättning för experimentet. Parametern validation_data har inte angetts och den angivna datamängden tilldelas parametern training_data .
I objektet AutoMLConfig kan du ange att parametern validation_size ska innehålla en del av träningsdata för validering. För den här strategin delar den automatiserade ML-uppgiften upp valideringsuppsättningen från den initiala training_data som du anger. Värdet ska vara mellan 0,0 och 1,0 icke-exklusivt (till exempel innebär 0,2 att 20 % av data lagras för valideringsdata).
Kommentar
I prognosscenarier stöds inte parametern validation_size .
I följande exempel finns en enda dataset för experimentet. Den training_data har åtkomst till hela datamängden, och 20 % av den tilldelas för validering (validation_size = 0.2):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
validation_size = 0.2,
label_column_name = 'Class'
)
Utföra korsvalidering av k-fold
Om du vill utföra korsvalidering av k-fold inkluderar du parametern n_cross_validations och definierar antalet vikningar. Den här parametern anger hur många korsvalideringar som ska utföras, baserat på samma antal veck.
Kommentar
I klassificeringsscenarier som använder djupa neurala nätverk (DNN) stöds inte parametern n_cross_validations .
För prognostiseringsscenarier, se hur korsvalidering tillämpas i Konfigurera AutoML för att träna en prognosmodell för tidsserier.
I följande exempel definieras fem delfördelningar för korsvalidering. Processen kör fem olika utbildningar, där varje träning använder 4/5 av data. Varje validering använder 1/5 av data med olika undantagsdelegering varje gång. Därför beräknas mått med medelvärdet av de fem valideringsmåtten.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 5
label_column_name = 'Class'
)
Utföra Monte Carlo-korsvalidering
Om du vill utföra Monte Carlo-korsvalidering inkluderar du både parametrarna validation_size och n_cross_validations i objektet AutoMLConfig .
För Monte Carlo-korsvalidering avsätter automatiserad ML den del av träningsdata som anges av parametern validation_size för validering och tilldelar sedan resten av data för träning. Den här processen upprepas sedan baserat på det värde som anges i parametern n_cross_validations , vilket genererar nya tränings- och valideringsdelningar, slumpmässigt, varje gång.
Kommentar
I prognosscenarier stöds inte korsvalidering av Monte Carlo.
I följande exempel definieras sju vikningar för korsvalidering och 20 % av träningsdatan för validering. Processen kör sju olika träningar, där varje träning använder 80 % av data. Varje validering använder 20 % av datan med en annan testuppsättning varje gång.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 7
validation_size = 0.2,
label_column_name = 'Class'
)
Ange anpassade datafolds för korsvalidering
Du kan också ange egna datauppdelningar för korsvalidering (CV). Den här metoden anses vara ett mer avancerat scenario eftersom du anger vilka kolumner som ska delas upp och användas för validering. Du inkluderar anpassade CV-delade kolumner i dina träningsdata och anger vilka kolumner genom att fylla i kolumnnamnen i parametern cv_split_column_names . Varje kolumn representerar en korsvalideringsdelning och har ett heltalsvärde på 1 eller 0. Värdet 1 anger att raden ska användas för träning. Värdet 0 anger att raden ska användas för validering.
Kommentar
I prognosscenarier stöds inte parametern cv_split_column_names .
Följande exempel innehåller bankmarknadsföringsdata med två delade CV-kolumner cv1 och cv2:
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_with_cv.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'y',
cv_split_column_names = ['cv1', 'cv2']
)
Kommentar
Om du vill använda cv_split_column_names med training_data och label_column_nameuppgraderar du Azure Machine Learning Python SDK version 1.6.0 eller senare. För tidigare SDK-versioner kan du använda cv_splits_indices, men observera att det endast används med indata för X och y datauppsättningar.
Ange måttberäkning för korsvalidering
När antingen k-fold eller Monte Carlo-korsvalidering används beräknas måtten på varje valideringsdelmängd och aggregeras sedan. Aggregeringsåtgärden är ett genomsnitt för skalära mått och en summa för diagram. Mått som beräknas under korsvalidering baseras på alla vikningar och därför alla exempel från träningsuppsättningen. Mer information finns i Utvärdera automatiserade ML-experimentresultat.
När antingen en anpassad valideringsuppsättning eller en automatiskt vald valideringsuppsättning används beräknas modellutvärderingsmått från endast den valideringsuppsättningen, inte träningsdata.
Tillhandahåll testdataset (förhandsgranskning)
Viktigt!
Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.
Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Du kan också tillhandahålla testdata för att utvärdera den rekommenderade modellen som automatiserad ML genererar åt dig när experimentet har slutförts. När du tillhandahåller testdata anses datat vara åtskilt från träning och validering för att förhindra eventuell snedvridningseffekt på resultatet av testkörningen av den rekommenderade modellen. Mer information finns i Tränings-, validerings- och testdata.
Varning
Testdatauppsättningsfunktionen är inte tillgänglig för följande automatiserade ML-scenarier:
Testdatauppsättningar måste vara i form av en Azure Machine Learning TabularDataset. Du kan ange en testdatauppsättning med parametrarna test_data och test_size i objektet AutoMLConfig . Dessa parametrar är ömsesidigt uteslutande och kan inte anges samtidigt eller med parametrarna cv_split_column_names eller cv_splits_indices .
I objektet AutoMLConfig använder du parametern test_data för att ange en befintlig datauppsättning:
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Om du vill använda en tränings-/testuppdelning i stället för att direkt tillhandahålla testdata, använd parametern test_size när du skapar AutoMLConfig. Den här parametern måste vara ett flyttalsvärde mellan 0.0 och 1.0 exklusivt. Den anger procentandelen av träningsdatauppsättningen som ska användas för testdatauppsättningen.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
Här följer några andra överväganden för att arbeta med en testdatauppsättning:
- För regressionsaktiviteter används slumpmässig sampling.
- För klassificeringsuppgifter används stratifierad sampling, men slumpmässig sampling används som reserv när stratifierad sampling inte är möjlig.
Kommentar
I prognosscenarier kan du för närvarande inte ange en testdatauppsättning med hjälp av en tränings-/testdelning med parametern test_size .
Om du skickar parametrarna test_data eller test_size till AutoMLConfig objektet utlöses automatiskt en fjärrtestkörning när experimentet har slutförts. Den här testkörningen använder de angivna testdata för att utvärdera den bästa modellen som automatiserad ML rekommenderar. Mer information finns i Hämta testjobbresultat.