De ML.NET CLI-opdrachtreferentie

De classificationopdrachten , regressionen recommendation opdrachten zijn de belangrijkste opdrachten die worden geleverd door het ML.NET CLI-hulpprogramma. Met deze opdrachten kunt u ML.NET modellen van goede kwaliteit genereren voor classificatie-, regressie- en aanbevelingsmodellen met behulp van geautomatiseerde machine learning (AutoML) en de C#-voorbeeldcode om dat model uit te voeren/te scoren. Daarnaast wordt de C#-code voor het trainen van het model gegenereerd om het algoritme en de instellingen van het model te onderzoeken.

Notitie

Dit artikel verwijst naar ML.NET CLI en ML.NET AutoML, die momenteel in preview zijn en materiaal kan worden gewijzigd.

Overzicht

Gebruiksvoorbeeld:

mlnet regression --dataset "cars.csv" --label-col price

Met de mlnet ML-taakopdrachten (classification, regression, recommendationen forecasting) worden de volgende assets gegenereerd:

  • Een geserialiseerd model .zip ("beste model") klaar voor gebruik.
  • C#-code voor het uitvoeren/scoren van het gegenereerde model.
  • C#-code met de trainingscode die wordt gebruikt om dat model te genereren.

De eerste twee assets kunnen rechtstreeks worden gebruikt in uw eindgebruikers-apps (ASP.NET Core-web-app, services, desktop-app en meer) om voorspellingen te doen met het model.

De derde asset, de trainingscode, laat zien wat ML.NET API-code is gebruikt door de CLI om het gegenereerde model te trainen, zodat u het specifieke algoritme en de instellingen van het model kunt onderzoeken.

Voorbeelden

De eenvoudigste CLI-opdracht voor een classificatieprobleem (Met AutoML wordt de meeste configuratie afgeleid van de opgegeven gegevens):

mlnet classification --dataset "customer-feedback.tsv" --label-col Sentiment

Een andere eenvoudige CLI-opdracht voor een regressieprobleem:

mlnet regression --dataset "cars.csv" --label-col Price

Maak en train een classificatiemodel met een traingegevensset, een testgegevensset en verdere aanpassing van expliciete argumenten:

mlnet classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-col "InsuranceRisk" --cache on --train-time 600

Opdrachtopties

Met de mlnet ML-taakopdrachten (classification, regression, recommendation, forecastingen train) worden meerdere modellen getraind op basis van de opgegeven gegevensset en ML.NET CLI-opties. Met deze opdrachten selecteert u ook het beste model, slaat u het model op als een geserialiseerd .zip-bestand en genereert u gerelateerde C#-code voor scoren en trainen.

Classificatieopties

Als u wordt uitgevoerd mlnet classification , wordt een classificatiemodel getraind. Kies deze opdracht als u wilt dat een ML-model gegevens in twee of meer klassen categoriseert (bijvoorbeeld sentimentanalyse).

mlnet classification

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Regressieopties

Als u een regressiemodel uitvoert mlnet regression , wordt er een regressiemodel getraind. Kies deze opdracht als u wilt dat een ML-model een numerieke waarde voorspelt (bijvoorbeeld prijsvoorspelling).

mlnet regression

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Aanbevelingsopties

Als u wordt uitgevoerd mlnet recommendation , wordt een aanbevelingsmodel getraind. Kies deze opdracht als u wilt dat een ML-model items aan gebruikers aanbeveelt op basis van beoordelingen (bijvoorbeeld productaanbeveling).

mlnet recommendation

--dataset <path> (REQUIRED)

--item-col <col> (REQUIRED)

--rating-col <col> (REQUIRED)

--user-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Ongeldige invoeropties zorgen ervoor dat het CLI-hulpprogramma een lijst met geldige invoer en een foutbericht verzendt.

Opties voor prognose

Als u een tijdreeksprognosemodel uitvoert mlnet forecasting , wordt er een model voor tijdreeksprognoses getraind. Kies deze opdracht als u wilt dat een ML-model een waarde voorspelt op basis van historische gegevens (bijvoorbeeld verkoopprognoses).

mlnet forecasting

--dataset <dataset> (REQUIRED)

--horizon <horizon> (REQUIRED)

--label-col <label-col> (REQUIRED)

--time-col <time-col> (REQUIRED)

--cache <Auto|Off|On>

--has-header

--log-file-path <log-file-path>

--name <name>

-o, --output <output>

--test-dataset <test-dataset>

--train-time <train-time>

-v, --verbosity <verbosity>

Opties voor trainen

Als u een model uitvoert mlnet train , wordt een model getraind op basis van een mbconfig-bestand dat is gegenereerd door Model Builder. Deze opdracht werkt alleen als de trainingsgegevens zich in dezelfde map bevinden als het mbconfig-bestand.

-training-config <training-config> (REQUIRED)

--log-file-path <log-file-path>

-v, --verbosity <verbosity>

Gegevensset

--dataset | -d (tekenreeks)

Dit argument biedt het bestandspad aan een van de volgende opties:

  • A: Het hele gegevenssetbestand: Als u deze optie gebruikt en de gebruiker deze optie niet opgeeft --test-dataset en --validation-dataset, wordt kruisvalidatie (k-fold, enzovoort) of geautomatiseerde gegevenssplitsingsmethoden intern gebruikt voor het valideren van het model. In dat geval hoeft de gebruiker alleen het bestandspad van de gegevensset op te geven.

  • B: Het bestand met de trainingsgegevensset: Als de gebruiker ook gegevenssets levert voor modelvalidatie (met behulp --test-dataset van en optioneel --validation-dataset), betekent het --dataset argument dat alleen de 'trainingsgegevensset' wordt gebruikt. Wanneer u bijvoorbeeld een benadering van 80% tot 20% gebruikt om de kwaliteit van het model te valideren en metrische gegevens over nauwkeurigheid te verkrijgen, heeft de 'trainingsgegevensset' 80% van de gegevens en zou de 'testgegevensset' 20% van de gegevens hebben.

Gegevensset testen

--test-dataset | -t (tekenreeks)

Bestandspad dat verwijst naar het bestand met de testgegevensset, bijvoorbeeld bij het gebruik van een benadering van 80% - 20% bij het maken van reguliere validaties om metrische gegevens over nauwkeurigheid te verkrijgen.

Als u --test-datasetdeze gebruikt, is dit --dataset ook vereist.

Het --test-dataset argument is optioneel, tenzij de --validation-dataset wordt gebruikt. In dat geval moet de gebruiker de drie argumenten gebruiken.

Validatiegegevensset

--validation-dataset | -v (tekenreeks)

Bestandspad dat verwijst naar het validatiegegevenssetbestand. De validatiegegevensset is in elk geval optioneel.

Als u een validation dataset, het gedrag moet zijn:

  • De test-dataset argumenten en --dataset argumenten zijn ook vereist.

  • De validation-dataset gegevensset wordt gebruikt om de voorspellingsfout voor modelselectie te schatten.

  • Deze test-dataset wordt gebruikt voor de evaluatie van de generalisatiefout van het uiteindelijke gekozen model. In het ideale geval moet de testset in een 'kluis' worden bewaard en alleen aan het einde van de gegevensanalyse worden opgehaald.

In principe wordt bij het gebruik van een validation dataset plus de test datasetvalidatiefase gesplitst in twee delen:

  1. In het eerste deel kijkt u gewoon naar uw modellen en selecteert u de best presterende benadering met behulp van de validatiegegevens (=validatie)
  2. Vervolgens schat u de nauwkeurigheid van de geselecteerde benadering (=test).

Daarom kan de scheiding van gegevens 80/10/10 of 75/15/10 zijn. Voorbeeld:

  • training-dataset het bestand moet 75% van de gegevens bevatten.
  • validation-dataset het bestand moet 15% van de gegevens bevatten.
  • test-dataset het bestand moet 10% van de gegevens bevatten.

In elk geval worden deze percentages bepaald door de gebruiker die de CLI gebruikt die de bestanden al zal splitsen.

Labelkolom

--label-col (int of tekenreeks)

Met dit argument kan een specifieke doel-/doelkolom (de variabele die u wilt voorspellen) worden opgegeven met behulp van de naam van de kolom die is ingesteld in de koptekst van de gegevensset of de numerieke index van de kolom in het bestand van de gegevensset (de kolomindexwaarden beginnen bij 0).

Dit argument wordt gebruikt voor classificatie - en regressieproblemen .

Itemkolom

--item-col (int of tekenreeks)

De itemkolom bevat de lijst met items die gebruikers beoordelen (items worden aanbevolen voor gebruikers). Deze kolom kan worden opgegeven met behulp van de naam van de kolom die is ingesteld in de koptekst van de gegevensset of de numerieke index van de kolom in het bestand van de gegevensset (de kolomindexwaarden beginnen bij 0).

Dit argument wordt alleen gebruikt voor de aanbevelingstaak .

Classificatiekolom

--rating-col (int of tekenreeks)

De classificatiekolom bevat de lijst met classificaties die worden gegeven aan items door gebruikers. Deze kolom kan worden opgegeven met behulp van de naam van de kolom die is ingesteld in de koptekst van de gegevensset of de numerieke index van de kolom in het bestand van de gegevensset (de kolomindexwaarden beginnen bij 0).

Dit argument wordt alleen gebruikt voor de aanbevelingstaak .

Gebruikerskolom

--user-col (int of tekenreeks)

De gebruikerskolom bevat de lijst met gebruikers die classificaties geven aan items. Deze kolom kan worden opgegeven met behulp van de naam van de kolom die is ingesteld in de koptekst van de gegevensset of de numerieke index van de kolom in het bestand van de gegevensset (de kolomindexwaarden beginnen bij 0).

Dit argument wordt alleen gebruikt voor de aanbevelingstaak .

Kolommen negeren

--ignore-columns (tekenreeks)

Met dit argument kunt u bestaande kolommen in het gegevenssetbestand negeren, zodat ze niet worden geladen en gebruikt door de trainingsprocessen.

Geef de kolomnamen op die u wilt negeren. Gebruik ', ' (komma met spatie) of ' (spatie) om meerdere kolomnamen te scheiden. U kunt aanhalingstekens gebruiken voor kolomnamen die witruimte bevatten (bijvoorbeeld 'aangemeld').

Voorbeeld:

--ignore-columns email, address, id, logged_in

Heeft koptekst

--has-header (bool)

Geef op of de gegevenssetbestanden een veldnamenrij hebben. Mogelijke waarden zijn:

  • true
  • false

De ML.NET CLI probeert deze eigenschap te detecteren als dit argument niet is opgegeven door de gebruiker.

Trainingstijd

--train-time (tekenreeks)

Standaard is de maximale verkennings- / treintijd 30 minuten.

Met dit argument wordt de maximale tijd (in seconden) voor het proces ingesteld om meerdere trainers en configuraties te verkennen. De geconfigureerde tijd kan worden overschreden als de opgegeven tijd te kort is (bijvoorbeeld 2 seconden) voor één iteratie. In dit geval is de werkelijke tijd de vereiste tijd om één modelconfiguratie in één iteratie te produceren.

De benodigde tijd voor iteraties kan variëren, afhankelijk van de grootte van de gegevensset.

Cache

--cache (tekenreeks)

Als u caching gebruikt, wordt de hele trainingsgegevensset in het geheugen geladen.

Voor kleine en middelgrote gegevenssets kan het gebruik van cache de trainingsprestaties drastisch verbeteren, wat betekent dat de trainingstijd korter kan zijn dan wanneer u geen cache gebruikt.

Voor grote gegevenssets kan het laden van alle gegevens in het geheugen echter een negatieve invloed hebben omdat u mogelijk uit het geheugen komt. Wanneer u traint met grote gegevenssetbestanden en geen cache gebruikt, worden ML.NET segmenten gegevens van het station gestreamd wanneer er meer gegevens moeten worden geladen tijdens de training.

U kunt de volgende waarden opgeven:

on: Dwingt cache te gebruiken tijdens de training. off: Dwingt cache niet te gebruiken tijdens de training. auto: Afhankelijk van de AutoML-heuristiek wordt de cache gebruikt of niet. Normaal gesproken gebruiken kleine/middelgrote gegevenssets cache en grote gegevenssets geen cache als u de auto keuze gebruikt.

Als u de --cache parameter niet opgeeft, wordt de cacheconfiguratie auto standaard gebruikt.

Naam

--name (tekenreeks)

De naam voor het gemaakte uitvoerproject of de gemaakte oplossing. Als er geen naam is opgegeven, wordt de naam sample-{mltask} gebruikt.

Het ML.NET modelbestand (.ZIP bestand) krijgt ook dezelfde naam.

Uitvoerpad

--output | -o (tekenreeks)

Hoofdlocatie/map om de gegenereerde uitvoer te plaatsen. De standaardwaarde is de huidige map.

Uitgebreidheid

--verbosity | -v (tekenreeks)

Hiermee stelt u het uitgebreidheidsniveau van de standaarduitvoer in.

Toegestane waarden zijn:

  • q[uiet]
  • m[inimal] (standaard)
  • diag[nostic] (informatieniveau voor logboekregistratie)

Standaard moet het CLI-hulpprogramma een aantal minimale feedback (minimal) weergeven bij het werken, zoals vermelden dat het werkt en, indien mogelijk, hoeveel tijd er nog is of welk percentage van de tijd is voltooid.

Help

-h |--help

Hiermee wordt help voor de opdracht afgedrukt met een beschrijving voor de parameter van elke opdracht.

Zie ook