Självstudie: Använd automatisk maskin inlärning för att förutse taxi priserTutorial: Use automated machine learning to predict taxi fares

Gäller för: JaBasic Edition JaEnterprise edition                   (Uppgradera till Enterprise Edition)APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

I den här självstudien använder du Automatisk maskin inlärning i Azure Machine Learning för att skapa en Regressions modell för att förutsäga priserna för NYC Taxi pris.In this tutorial, you use automated machine learning in Azure Machine Learning to create a regression model to predict NYC taxi fare prices. Den här processen godkänner inlärnings data och konfigurations inställningar och upprepas automatiskt genom kombinationer av olika metoder, modeller och inställningar för en funktion för funktioner, modeller och kompatibilitetsinställningar för att komma till den bästa modellen.This process accepts training data and configuration settings, and automatically iterates through combinations of different feature normalization/standardization methods, models, and hyperparameter settings to arrive at the best model.

Flödesdiagram

I den här självstudien får du lära dig följande uppgifter:In this tutorial you learn the following tasks:

  • Ladda ned, transformera och rensa data med Azure Open data uppsättningarDownload, transform, and clean data using Azure Open Datasets
  • Träna en automatisk maskin inlärnings Regressions modellTrain an automated machine learning regression model
  • Beräkna modell precisionCalculate model accuracy

Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.If you don’t have an Azure subscription, create a free account before you begin. Prova den kostnads fria eller betalda versionen av Azure Machine Learning idag.Try the free or paid version of Azure Machine Learning today.

Nödvändiga komponenterPrerequisites

  • Slutför installations självstudien om du inte redan har en Azure Machine Learning arbets yta eller en virtuell dator.Complete the setup tutorial if you don't already have an Azure Machine Learning workspace or notebook virtual machine.
  • När du har slutfört installations guiden öppnar du självstudierna/regression-Automated-ml. ipynb Notebook med samma Notebook-Server.After you complete the setup tutorial, open the tutorials/regression-automated-ml.ipynb notebook using the same notebook server.

Den här själv studie kursen finns också på GitHub om du vill köra den i din egen lokala miljö.This tutorial is also available on GitHub if you wish to run it in your own local environment. Kör pip install azureml-sdk[automl] azureml-opendatasets azureml-widgets för att hämta de nödvändiga paketen.Run pip install azureml-sdk[automl] azureml-opendatasets azureml-widgets to get the required packages.

Hämta och förbereda dataDownload and prepare data

Importera de nödvändiga paketen.Import the necessary packages. Det öppna data uppsättnings paketet innehåller en klass som representerar varje data källaNycTlcGreen (till exempel) för att enkelt filtrera datum parametrar innan de laddas ned.The Open Datasets package contains a class representing each data source (NycTlcGreen for example) to easily filter date parameters before downloading.

from azureml.opendatasets import NycTlcGreen
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta

Börja med att skapa en dataframe som innehåller taxi data.Begin by creating a dataframe to hold the taxi data. När du arbetar i en miljö som inte är Spark-miljö kan öppna data uppsättningar bara hämta en månad med data i taget med vissa klasser för att undvika MemoryError med stora data mängder.When working in a non-Spark environment, Open Datasets only allows downloading one month of data at a time with certain classes to avoid MemoryError with large datasets.

För att hämta taxi data, Hämta upprepade gånger en månad i taget och innan du lägger till den i green_taxi_df slumpvis sampla 2 000 poster från varje månad för att undvika bloating dataframe.To download taxi data, iteratively fetch one month at a time, and before appending it to green_taxi_df randomly sample 2,000 records from each month to avoid bloating the dataframe. Förhandsgranska sedan data.Then preview the data.

green_taxi_df = pd.DataFrame([])
start = datetime.strptime("1/1/2015","%m/%d/%Y")
end = datetime.strptime("1/31/2015","%m/%d/%Y")

for sample_month in range(12):
    temp_df_green = NycTlcGreen(start + relativedelta(months=sample_month), end + relativedelta(months=sample_month)) \
        .to_pandas_dataframe()
    green_taxi_df = green_taxi_df.append(temp_df_green.sample(2000))

green_taxi_df.head(10)
NyttolastvendorID lpepPickupDatetimelpepPickupDatetime lpepDropoffDatetimelpepDropoffDatetime passengerCountpassengerCount tripDistancetripDistance puLocationIdpuLocationId doLocationIddoLocationId pickupLongitudepickupLongitude pickupLatitudepickupLatitude dropoffLongitudedropoffLongitude ...... paymentTypepaymentType fareAmountfareAmount Extraextra mtaTaxmtaTax improvementSurchargeimprovementSurcharge tipAmounttipAmount tollsAmounttollsAmount ehailFeeehailFee totalAmounttotalAmount tripTypetripType
131969131969 22 2015-01-11 05:34:442015-01-11 05:34:44 2015-01-11 05:45:032015-01-11 05:45:03 33 4,844.84 IngenNone IngenNone – 73,88-73.88 40,8440.84 – 73,94-73.94 ...... 22 15,0015.00 0,500.50 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 16,3016.30 1,001.00
11298171129817 22 2015-01-20 16:26:292015-01-20 16:26:29 2015-01-20 16:30:262015-01-20 16:30:26 11 0,690.69 IngenNone IngenNone – 73,96-73.96 40,8140.81 – 73,96-73.96 ...... 22 4,504.50 1,001.00 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 6,306.30 1,001.00
12786201278620 22 2015-01-01 05:58:102015-01-01 05:58:10 2015-01-01 06:00:552015-01-01 06:00:55 11 0,450.45 IngenNone IngenNone – 73,92-73.92 40,7640.76 – 73,91-73.91 ...... 22 4,004.00 0,000.00 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 4,804.80 1,001.00
348430348430 22 2015-01-17 02:20:502015-01-17 02:20:50 2015-01-17 02:41:382015-01-17 02:41:38 11 0,000.00 IngenNone IngenNone – 73,81-73.81 40,7040.70 – 73,82-73.82 ...... 22 12,5012.50 0,500.50 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 13,8013.80 1,001.00
12696271269627 11 2015-01-01 05:04:102015-01-01 05:04:10 2015-01-01 05:06:232015-01-01 05:06:23 11 0,500.50 IngenNone IngenNone – 73,92-73.92 40,7640.76 – 73,92-73.92 ...... 22 4,004.00 0,500.50 0,500.50 00 0,000.00 0,000.00 ndetnan 5,005.00 1,001.00
811755811755 11 2015-01-04 19:57:512015-01-04 19:57:51 2015-01-04 20:05:452015-01-04 20:05:45 22 1,101.10 IngenNone IngenNone – 73,96-73.96 40,7240.72 – 73,95-73.95 ...... 22 6,506.50 0,500.50 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 7,807.80 1,001.00
737281737281 11 2015-01-03 12:27:312015-01-03 12:27:31 2015-01-03 12:33:522015-01-03 12:33:52 11 0,900.90 IngenNone IngenNone – 73,88-73.88 40,7640.76 – 73,87-73.87 ...... 22 6,006.00 0,000.00 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 6,806.80 1,001.00
113951113951 11 2015-01-09 23:25:512015-01-09 23:25:51 2015-01-09 23:39:522015-01-09 23:39:52 11 3,303.30 IngenNone IngenNone – 73,96-73.96 40,7240.72 – 73,91-73.91 ...... 22 12,5012.50 0,500.50 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 13,8013.80 1,001.00
150436150436 22 2015-01-11 17:15:142015-01-11 17:15:14 2015-01-11 17:22:572015-01-11 17:22:57 11 1,191.19 IngenNone IngenNone – 73,94-73.94 40,7140.71 – 73,95-73.95 ...... 11 7,007.00 0,000.00 0,500.50 0,30.3 1.751.75 0,000.00 ndetnan 9,559.55 1,001.00
432136432136 22 2015-01-22 23:16:332015-01-22 23:16:33 2015-01-22 23:20:132015-01-22 23:20:13 11 0,650.65 IngenNone IngenNone – 73,94-73.94 40,7140.71 – 73,94-73.94 ...... 22 5,005.00 0,500.50 0,500.50 0,30.3 0,000.00 0,000.00 ndetnan 6,306.30 1,001.00

10 rader × 23 kolumner10 rows × 23 columns

Nu när de ursprungliga data har lästs in definierar du en funktion för att skapa olika tidsbaserade funktioner från fältet Hämta datum/tid.Now that the initial data is loaded, define a function to create various time-based features from the pickup datetime field. Detta skapar nya fält för månads nummer, dag i månad, veckodag och veckodag och ger modellen i tidsbaserad säsongs beroende.This will create new fields for the month number, day of month, day of week, and hour of day, and will allow the model to factor in time-based seasonality. Använd funktionen apply() på dataframe för att upprepa funktionen build_time_features() för varje rad i taxi data.Use the apply() function on the dataframe to iteratively apply the build_time_features() function to each row in the taxi data.

def build_time_features(vector):
    pickup_datetime = vector[0]
    month_num = pickup_datetime.month
    day_of_month = pickup_datetime.day
    day_of_week = pickup_datetime.weekday()
    hour_of_day = pickup_datetime.hour

    return pd.Series((month_num, day_of_month, day_of_week, hour_of_day))

green_taxi_df[["month_num", "day_of_month","day_of_week", "hour_of_day"]] = green_taxi_df[["lpepPickupDatetime"]].apply(build_time_features, axis=1)
green_taxi_df.head(10)
NyttolastvendorID lpepPickupDatetimelpepPickupDatetime lpepDropoffDatetimelpepDropoffDatetime passengerCountpassengerCount tripDistancetripDistance puLocationIdpuLocationId doLocationIddoLocationId pickupLongitudepickupLongitude pickupLatitudepickupLatitude dropoffLongitudedropoffLongitude ...... improvementSurchargeimprovementSurcharge tipAmounttipAmount tollsAmounttollsAmount ehailFeeehailFee totalAmounttotalAmount tripTypetripType month_nummonth_num day_of_monthday_of_month day_of_weekday_of_week hour_of_dayhour_of_day
131969131969 22 2015-01-11 05:34:442015-01-11 05:34:44 2015-01-11 05:45:032015-01-11 05:45:03 33 4,844.84 IngenNone IngenNone – 73,88-73.88 40,8440.84 – 73,94-73.94 ...... 0,30.3 0,000.00 0,000.00 ndetnan 16,3016.30 1,001.00 11 1111 66 55
11298171129817 22 2015-01-20 16:26:292015-01-20 16:26:29 2015-01-20 16:30:262015-01-20 16:30:26 11 0,690.69 IngenNone IngenNone – 73,96-73.96 40,8140.81 – 73,96-73.96 ...... 0,30.3 0,000.00 0,000.00 ndetnan 6,306.30 1,001.00 11 2020 11 1616
12786201278620 22 2015-01-01 05:58:102015-01-01 05:58:10 2015-01-01 06:00:552015-01-01 06:00:55 11 0,450.45 IngenNone IngenNone – 73,92-73.92 40,7640.76 – 73,91-73.91 ...... 0,30.3 0,000.00 0,000.00 ndetnan 4,804.80 1,001.00 11 11 33 55
348430348430 22 2015-01-17 02:20:502015-01-17 02:20:50 2015-01-17 02:41:382015-01-17 02:41:38 11 0,000.00 IngenNone IngenNone – 73,81-73.81 40,7040.70 – 73,82-73.82 ...... 0,30.3 0,000.00 0,000.00 ndetnan 13,8013.80 1,001.00 11 1717 55 22
12696271269627 11 2015-01-01 05:04:102015-01-01 05:04:10 2015-01-01 05:06:232015-01-01 05:06:23 11 0,500.50 IngenNone IngenNone – 73,92-73.92 40,7640.76 – 73,92-73.92 ...... 00 0,000.00 0,000.00 ndetnan 5,005.00 1,001.00 11 11 33 55
811755811755 11 2015-01-04 19:57:512015-01-04 19:57:51 2015-01-04 20:05:452015-01-04 20:05:45 22 1,101.10 IngenNone IngenNone – 73,96-73.96 40,7240.72 – 73,95-73.95 ...... 0,30.3 0,000.00 0,000.00 ndetnan 7,807.80 1,001.00 11 44 66 1919
737281737281 11 2015-01-03 12:27:312015-01-03 12:27:31 2015-01-03 12:33:522015-01-03 12:33:52 11 0,900.90 IngenNone IngenNone – 73,88-73.88 40,7640.76 – 73,87-73.87 ...... 0,30.3 0,000.00 0,000.00 ndetnan 6,806.80 1,001.00 11 33 55 1212
113951113951 11 2015-01-09 23:25:512015-01-09 23:25:51 2015-01-09 23:39:522015-01-09 23:39:52 11 3,303.30 IngenNone IngenNone – 73,96-73.96 40,7240.72 – 73,91-73.91 ...... 0,30.3 0,000.00 0,000.00 ndetnan 13,8013.80 1,001.00 11 99 44 2323
150436150436 22 2015-01-11 17:15:142015-01-11 17:15:14 2015-01-11 17:22:572015-01-11 17:22:57 11 1,191.19 IngenNone IngenNone – 73,94-73.94 40,7140.71 – 73,95-73.95 ...... 0,30.3 1.751.75 0,000.00 ndetnan 9,559.55 1,001.00 11 1111 66 1717
432136432136 22 2015-01-22 23:16:332015-01-22 23:16:33 2015-01-22 23:20:132015-01-22 23:20:13 11 0,650.65 IngenNone IngenNone – 73,94-73.94 40,7140.71 – 73,94-73.94 ...... 0,30.3 0,000.00 0,000.00 ndetnan 6,306.30 1,001.00 11 2222 33 2323

10 rader × 27 kolumner10 rows × 27 columns

Ta bort några av de kolumner som du inte behöver för utbildning eller ytterligare funktions utveckling.Remove some of the columns that you won't need for training or additional feature building.

columns_to_remove = ["lpepPickupDatetime", "lpepDropoffDatetime", "puLocationId", "doLocationId", "extra", "mtaTax",
                     "improvementSurcharge", "tollsAmount", "ehailFee", "tripType", "rateCodeID",
                     "storeAndFwdFlag", "paymentType", "fareAmount", "tipAmount"
                    ]
for col in columns_to_remove:
    green_taxi_df.pop(col)

green_taxi_df.head(5)

Rensa dataCleanse data

Kör funktionen describe() på den nya dataframe för att se sammanfattnings statistik för varje fält.Run the describe() function on the new dataframe to see summary statistics for each field.

green_taxi_df.describe()
NyttolastvendorID passengerCountpassengerCount tripDistancetripDistance pickupLongitudepickupLongitude pickupLatitudepickupLatitude dropoffLongitudedropoffLongitude dropoffLatitudedropoffLatitude totalAmounttotalAmount month_nummonth_num day_of_monthday_of_month day_of_weekday_of_week hour_of_dayhour_of_day
countcount 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00 48000,0048000.00
ansesmean 1,781.78 1,371.37 2,872.87 – 73,83-73.83 40,6940.69 – 73,84-73.84 40,7040.70 14,7514.75 6,506.50 15,1315.13 3,273.27 13,5213.52
standardstd 0,410.41 1,041.04 2,932.93 2,762.76 1,521.52 2,612.61 1,441.44 12,0812.08 3,453.45 8,458.45 1,951.95 6,836.83
min.min 1,001.00 0,000.00 0,000.00 – 74,66-74.66 0,000.00 – 74,66-74.66 0,000.00 – 300,00-300.00 1,001.00 1,001.00 0,000.00 0,000.00
25 %25% 2,002.00 1,001.00 1,061.06 – 73,96-73.96 40,7040.70 – 73,97-73.97 40,7040.70 7,807.80 3,753.75 8,008.00 2,002.00 9,009.00
50 %50% 2,002.00 1,001.00 1,901.90 – 73,94-73.94 40,7540.75 – 73,94-73.94 40,7540.75 11,3011.30 6,506.50 15,0015.00 3,003.00 15,0015.00
75%75% 2,002.00 1,001.00 3,603.60 – 73,92-73.92 40,8040.80 – 73,91-73.91 40,7940.79 17,8017.80 9,259.25 22,0022.00 5,005.00 19,0019.00
bekräftatmax 2,002.00 9,009.00 97,5797.57 0,000.00 41,9341.93 0,000.00 41,9441.94 450,00450.00 12,0012.00 30,0030.00 6,006.00 23,0023.00

Från sammanfattnings statistik ser du att det finns flera fält med avvikande värden eller värden som minskar modell noggrannheten.From the summary statistics, you see that there are several fields that have outliers or values that will reduce model accuracy. Börja med att filtrera Lat/Long-fälten så att de ligger inom gränserna för Manhattan-ytan.First filter the lat/long fields to be within the bounds of the Manhattan area. Detta filtrerar längre taxi resor eller resor som är avvikande i förhållande till deras förhållande till andra funktioner.This will filter out longer taxi trips or trips that are outliers in respect to their relationship with other features.

Filtrera också tripDistance fältet så att det är större än noll men mindre än 31 mil (det haversine avståndet mellan de två Lat/Long-paren).Additionally filter the tripDistance field to be greater than zero but less than 31 miles (the haversine distance between the two lat/long pairs). Detta eliminerar långa avvikare resor som har inkonsekventa rese kostnader.This eliminates long outlier trips that have inconsistent trip cost.

Slutligen har fältet totalAmount negativa värden för Taxins biljett priser, vilket inte är meningsfullt i den här modellen, och fältet passengerCount innehåller felaktiga data med de lägsta värdena noll.Lastly, the totalAmount field has negative values for the taxi fares, which don't make sense in the context of our model, and the passengerCount field has bad data with the minimum values being zero.

Filtrera bort dessa avvikelser med hjälp av fråge funktioner och ta sedan bort de senaste kolumnerna som behövs för utbildning.Filter out these anomalies using query functions, and then remove the last few columns unnecessary for training.

final_df = green_taxi_df.query("pickupLatitude>=40.53 and pickupLatitude<=40.88")
final_df = final_df.query("pickupLongitude>=-74.09 and pickupLongitude<=-73.72")
final_df = final_df.query("tripDistance>=0.25 and tripDistance<31")
final_df = final_df.query("passengerCount>0 and totalAmount>0")

columns_to_remove_for_training = ["pickupLongitude", "pickupLatitude", "dropoffLongitude", "dropoffLatitude"]
for col in columns_to_remove_for_training:
    final_df.pop(col)

Anropa describe() igen på data för att säkerställa att rengöringen fungerade som förväntat.Call describe() again on the data to ensure cleansing worked as expected. Nu har du en för beredd och rensad uppsättning taxi-, helgdags-och väder uppgifter som du kan använda för utbildning av maskin inlärnings modell.You now have a prepared and cleansed set of taxi, holiday, and weather data to use for machine learning model training.

final_df.describe()

Konfigurera arbetsytaConfigure workspace

Skapa ett arbetsyteobjekt från den befintliga arbetsytan.Create a workspace object from the existing workspace. En arbets yta är en klass som godkänner din Azure-prenumeration och resursinformation.A Workspace is a class that accepts your Azure subscription and resource information. Den skapar också en molnresurs för att övervaka och spåra dina körningar i modellen.It also creates a cloud resource to monitor and track your model runs. Workspace.from_config() läser filen config. JSON och läser in autentiseringsinformationen till ett objekt med namnet ws.Workspace.from_config() reads the file config.json and loads the authentication details into an object named ws. ws används i resten av koden i den här självstudien.ws is used throughout the rest of the code in this tutorial.

from azureml.core.workspace import Workspace
ws = Workspace.from_config()

Dela data till uppsättningar för träning och testningSplit the data into train and test sets

Dela data i utbildnings-och test uppsättningar med hjälp av funktionen train_test_split i scikit-learn-biblioteket.Split the data into training and test sets by using the train_test_split function in the scikit-learn library. Den här funktionen åtskiljer data i data uppsättningen x (funktioner) för modell utbildning och data uppsättningen y (värden att Förutsäg) för testning.This function segregates the data into the x (features) data set for model training and the y (values to predict) data set for testing.

Parametern test_size anger procentandelen av data som ska allokeras till testning.The test_size parameter determines the percentage of data to allocate to testing. Parametern random_state anger ett start värde för den slumpmässiga generatorn, så att dina träna-test-delningar är deterministiska.The random_state parameter sets a seed to the random generator, so that your train-test splits are deterministic.

from sklearn.model_selection import train_test_split

y_df = final_df.pop("totalAmount")
x_df = final_df

x_train, x_test, y_train, y_test = train_test_split(x_df, y_df, test_size=0.2, random_state=223)

Syftet med det här steget är att ha datapunkter för att testa den färdiga modell som inte har använts för att träna modellen, detta för att mäta den äkta noggrannheten.The purpose of this step is to have data points to test the finished model that haven't been used to train the model, in order to measure true accuracy.

Med andra ord bör en korrekt tränad modell kunna göra noggranna förutsägelser från data som den inte redan har sett.In other words, a well-trained model should be able to accurately make predictions from data it hasn't already seen. Nu har du data för automatisk utbildning av Machine Learning-modellen.You now have data prepared for auto-training a machine learning model.

Träna en modell automatisktAutomatically train a model

För att träna en modell automatiskt gör du följande:To automatically train a model, take the following steps:

  1. Definiera inställningar för körningen av experimentet.Define settings for the experiment run. Koppla dina träningsdata till konfigurationen och ändra de inställningar som styr träningsprocessen.Attach your training data to the configuration, and modify settings that control the training process.
  2. Skicka experimentet för modelljustering.Submit the experiment for model tuning. När experimentet har skickats itererar processen genom olika maskininlärningsalgoritmer och inställningar för hyperparametrar enligt dina definierade begränsningar.After submitting the experiment, the process iterates through different machine learning algorithms and hyperparameter settings, adhering to your defined constraints. Den väljer den modell som passar bäst genom att optimera ett noggrannhetsmått.It chooses the best-fit model by optimizing an accuracy metric.

Definiera utbildnings inställningarDefine training settings

Definiera experiment parametern och modell inställningarna för träning.Define the experiment parameter and model settings for training. Visa hela listan med inställningar.View the full list of settings. Att skicka experimentet med dessa standardinställningar tar cirka 5-20 min, men om du vill ha en kortare körnings tid minskar du experiment_timeout_minutes-parametern.Submitting the experiment with these default settings will take approximately 5-20 min, but if you want a shorter run time, reduce the experiment_timeout_minutes parameter.

EgenskapProperty Värde i den här självstudienValue in this tutorial BeskrivningDescription
iteration_timeout_minutesiteration_timeout_minutes 22 Tidsgräns i minuter för varje iteration.Time limit in minutes for each iteration. Minska det här värdet om du vill minska den totala körningstiden.Reduce this value to decrease total runtime.
experiment_timeout_minutesexperiment_timeout_minutes 2020 Den maximala tid i minuter som alla iterationer kombineras kan ta innan experimentet avslutas.Maximum amount of time in minutes that all iterations combined can take before the experiment terminates.
enable_early_stoppingenable_early_stopping TrueTrue Flagga för att Enble tidig uppsägning om poängen inte förbättras på kort sikt.Flag to enble early termination if the score is not improving in the short term.
primary_metricprimary_metric spearman_correlationspearman_correlation Mått som du vill optimera.Metric that you want to optimize. Den modell som passar bäst väljs utifrån det här måttet.The best-fit model will be chosen based on this metric.
funktionaliseringfeaturization Diskauto Genom att använda Autokan experimentet Förbearbeta indata (hantering av saknade data, konvertera text till numeriskt osv.)By using auto, the experiment can preprocess the input data (handling missing data, converting text to numeric, etc.)
verbosityverbosity logging.INFOlogging.INFO Styr loggningsnivån.Controls the level of logging.
n_cross_validationsn_cross_validations 55 Det antal delningar av korsvalidering som ska utföras när verifieringsdata inte har angetts.Number of cross-validation splits to perform when validation data is not specified.
import logging

automl_settings = {
    "iteration_timeout_minutes": 2,
    "experiment_timeout_minutes": 20,
    "enable_early_stopping": True,
    "primary_metric": 'spearman_correlation',
    "featurization": 'auto',
    "verbosity": logging.INFO,
    "n_cross_validations": 5
}

Använd dina definierade utbildnings inställningar som en **kwargs parameter till ett AutoMLConfig-objekt.Use your defined training settings as a **kwargs parameter to an AutoMLConfig object. Ange även dina träningsdata och modelltypen, som i det här fallet är regression.Additionally, specify your training data and the type of model, which is regression in this case.

from azureml.train.automl import AutoMLConfig

automl_config = AutoMLConfig(task='regression',
                             debug_log='automated_ml_errors.log',
                             X=x_train.values,
                             y=y_train.values.flatten(),
                             **automl_settings)

Anteckning

Automatiserad bearbetning av Machine Learning för bearbetning (funktions normalisering, hantering av saknade data, konvertering av text till tal osv.) blir en del av den underliggande modellen.Automated machine learning pre-processing steps (feature normalization, handling missing data, converting text to numeric, etc.) become part of the underlying model. När du använder modellen för förutsägelser tillämpas samma för bearbetnings steg som tillämpas på dina indata-data automatiskt.When using the model for predictions, the same pre-processing steps applied during training are applied to your input data automatically.

Träna den automatiska regressionsmodellenTrain the automatic regression model

Skapa ett experiment objekt i din arbets yta.Create an experiment object in your workspace. Ett experiment fungerar som en behållare för dina enskilda körningar.An experiment acts as a container for your individual runs. Skicka det definierade automl_config-objektet till experimentet och Ställ in utdata till True för att visa förloppet under körningen.Pass the defined automl_config object to the experiment, and set the output to True to view progress during the run.

När experimentet har startats visas uppdateringarna Live som experimentet.After starting the experiment, the output shown updates live as the experiment runs. För varje iteration ser du modelltypen, körningens varaktighet samt träningens noggrannhet.For each iteration, you see the model type, the run duration, and the training accuracy. Fältet BEST spårar den bästa löpande körningspoängen utifrån din måttyp.The field BEST tracks the best running training score based on your metric type.

from azureml.core.experiment import Experiment
experiment = Experiment(ws, "taxi-experiment")
local_run = experiment.submit(automl_config, show_output=True)
Running on local machine
Parent Run ID: AutoML_1766cdf7-56cf-4b28-a340-c4aeee15b12b
Current status: DatasetFeaturization. Beginning to featurize the dataset.
Current status: DatasetEvaluation. Gathering dataset statistics.
Current status: FeaturesGeneration. Generating features for the dataset.
Current status: DatasetFeaturizationCompleted. Completed featurizing the dataset.
Current status: DatasetCrossValidationSplit. Generating individually featurized CV splits.
Current status: ModelSelection. Beginning model selection.

****************************************************************************************************
ITERATION: The iteration being evaluated.
PIPELINE: A summary description of the pipeline being evaluated.
DURATION: Time taken for the current iteration.
METRIC: The result of computing score on the fitted pipeline.
BEST: The best observed score thus far.
****************************************************************************************************

 ITERATION   PIPELINE                                       DURATION      METRIC      BEST
         0   StandardScalerWrapper RandomForest             0:00:16       0.8746    0.8746
         1   MinMaxScaler RandomForest                      0:00:15       0.9468    0.9468
         2   StandardScalerWrapper ExtremeRandomTrees       0:00:09       0.9303    0.9468
         3   StandardScalerWrapper LightGBM                 0:00:10       0.9424    0.9468
         4   RobustScaler DecisionTree                      0:00:09       0.9449    0.9468
         5   StandardScalerWrapper LassoLars                0:00:09       0.9440    0.9468
         6   StandardScalerWrapper LightGBM                 0:00:10       0.9282    0.9468
         7   StandardScalerWrapper RandomForest             0:00:12       0.8946    0.9468
         8   StandardScalerWrapper LassoLars                0:00:16       0.9439    0.9468
         9   MinMaxScaler ExtremeRandomTrees                0:00:35       0.9199    0.9468
        10   RobustScaler ExtremeRandomTrees                0:00:19       0.9411    0.9468
        11   StandardScalerWrapper ExtremeRandomTrees       0:00:13       0.9077    0.9468
        12   StandardScalerWrapper LassoLars                0:00:15       0.9433    0.9468
        13   MinMaxScaler ExtremeRandomTrees                0:00:14       0.9186    0.9468
        14   RobustScaler RandomForest                      0:00:10       0.8810    0.9468
        15   StandardScalerWrapper LassoLars                0:00:55       0.9433    0.9468
        16   StandardScalerWrapper ExtremeRandomTrees       0:00:13       0.9026    0.9468
        17   StandardScalerWrapper RandomForest             0:00:13       0.9140    0.9468
        18   VotingEnsemble                                 0:00:23       0.9471    0.9471
        19   StackEnsemble                                  0:00:27       0.9463    0.9471

Utforska resultatenExplore the results

Utforska resultatet av automatisk utbildning med en Jupyter-widget.Explore the results of automatic training with a Jupyter widget. Widgeten gör att du kan se en graf och tabell över alla enskilda körnings iterationer, tillsammans med utbildnings precisions mått och metadata.The widget allows you to see a graph and table of all individual run iterations, along with training accuracy metrics and metadata. Dessutom kan du filtrera efter olika precisions mått än ditt primära mått med list rutan.Additionally, you can filter on different accuracy metrics than your primary metric with the dropdown selector.

from azureml.widgets import RunDetails
RunDetails(local_run).show()

Jupyter Widget-körningsinformation Jupyter Widget-diagramJupyter widget run details Jupyter widget plot

Hämta den bästa modellenRetrieve the best model

Välj den bästa modellen från dina iterationer.Select the best model from your iterations. Funktionen get_output returnerar den bästa körningen och den monterade modellen för den senaste pass-anropet.The get_output function returns the best run and the fitted model for the last fit invocation. Genom att använda överlagringar på get_outputkan du hämta den bästa körnings-och den monterade modellen för alla inloggade mått eller en viss iteration.By using the overloads on get_output, you can retrieve the best run and fitted model for any logged metric or a particular iteration.

best_run, fitted_model = local_run.get_output()
print(best_run)
print(fitted_model)

Testa den bästa modellens precisionTest the best model accuracy

Använd den bästa modellen för att köra förutsägelser på test data uppsättningen för att förutse taxi-priser.Use the best model to run predictions on the test data set to predict taxi fares. Funktionen predict använder den bästa modellen och förutsäger värdena för y, rese kostnad, från x_test data uppsättningen.The function predict uses the best model and predicts the values of y, trip cost, from the x_test data set. Skriv ut de 10 första förutsagda kostnadsvärdena från y_predict.Print the first 10 predicted cost values from y_predict.

y_predict = fitted_model.predict(x_test.values)
print(y_predict[:10])

Beräkna root mean squared error för resultatet.Calculate the root mean squared error of the results. Konvertera y_test dataframe till en lista som ska jämföras med de förväntade värdena.Convert the y_test dataframe to a list to compare to the predicted values. Funktionen mean_squared_error tar emot två matriser med värden och beräknar det genomsnittliga kvadratfelet mellan dem.The function mean_squared_error takes two arrays of values and calculates the average squared error between them. Att ta kvadratroten ur resultatet ger ett fel i samma enheter som y-variabeln, kostnad.Taking the square root of the result gives an error in the same units as the y variable, cost. Det anger ungefär hur långt priset för taxi avgiften kommer från de faktiska priserna.It indicates roughly how far the taxi fare predictions are from the actual fares.

from sklearn.metrics import mean_squared_error
from math import sqrt

y_actual = y_test.values.flatten().tolist()
rmse = sqrt(mean_squared_error(y_actual, y_predict))
rmse

Kör följande kod för att beräkna medelvärde för absoluta procent fel (MAPE) med hjälp av den fullständiga y_actual och y_predict data uppsättningar.Run the following code to calculate mean absolute percent error (MAPE) by using the full y_actual and y_predict data sets. Det här måttet beräknar en absolut skillnad mellan varje förväntat och faktiskt värde och summerar alla skillnaderna.This metric calculates an absolute difference between each predicted and actual value and sums all the differences. Sedan uttrycker den summan som en procent andel av summan av de faktiska värdena.Then it expresses that sum as a percent of the total of the actual values.

sum_actuals = sum_errors = 0

for actual_val, predict_val in zip(y_actual, y_predict):
    abs_error = actual_val - predict_val
    if abs_error < 0:
        abs_error = abs_error * -1

    sum_errors = sum_errors + abs_error
    sum_actuals = sum_actuals + actual_val

mean_abs_percent_error = sum_errors / sum_actuals
print("Model MAPE:")
print(mean_abs_percent_error)
print()
print("Model Accuracy:")
print(1 - mean_abs_percent_error)
Model MAPE:
0.14353867606052823

Model Accuracy:
0.8564613239394718

Från de två noggrannhets måtten för förutsägelse ser du att modellen är ganska lämplig vid förutsägelse av taxi biljett från data uppsättningens funktioner, vanligt vis inom +-$4,00 och cirka 15% fel.From the two prediction accuracy metrics, you see that the model is fairly good at predicting taxi fares from the data set's features, typically within +- $4.00, and approximately 15% error.

Utvecklingsprocessen för maskininlärningsmodeller är mycket resurskrävande och fordrar betydande domänkunskap och tid för att köra och jämföra resultat från flera olika modeller.The traditional machine learning model development process is highly resource-intensive, and requires significant domain knowledge and time investment to run and compare the results of dozens of models. Användning av automatisk maskininlärning är ett bra sätt att snabbt testa flera olika modeller för ett scenario.Using automated machine learning is a great way to rapidly test many different models for your scenario.

Rensa resurserClean up resources

Slutför inte det här avsnittet om du tänker köra andra Azure Machine Learning själv studie kurser.Do not complete this section if you plan on running other Azure Machine Learning tutorials.

Stoppa den virtuella Notebook-datornStop the Notebook VM

Om du har använt en beräknings instans eller en VM-dator stoppar du den virtuella datorn när du inte använder den för att minska kostnaderna.If you used a compute instance or Notebook VM, stop the VM when you are not using it to reduce cost.

  1. Välj Compute (beräkna) i arbets ytan.In your workspace, select Compute.

  2. Välj den virtuella datorn i listan.From the list, select the VM.

  3. Välj stoppa.Select Stop.

  4. När du är redo att använda servern igen väljer du Starta.When you're ready to use the server again, select Start.

Ta bort alltDelete everything

Om du inte planerar att använda de resurser som du har skapat tar du bort dem, så du debiteras inte några avgifter.If you don't plan to use the resources you created, delete them, so you don't incur any charges.

  1. I Azure-portalen väljer du Resursgrupper längst till vänster.In the Azure portal, select Resource groups on the far left.
  2. Välj den resursgrupp i listan som du har skapat.From the list, select the resource group you created.
  3. Välj Ta bort resursgrupp.Select Delete resource group.
  4. Ange resursgruppsnamnet.Enter the resource group name. Välj sedan Ta bort.Then select Delete.

Du kan också behålla resursgruppen men ta bort en enstaka arbetsyta.You can also keep the resource group but delete a single workspace. Visa arbetsytans egenskaper och välj Ta bort.Display the workspace properties and select Delete.

Nästa stegNext steps

I den här automatiserade självstudiekursen om maskininlärning har du gjort följande uppgifter:In this automated machine learning tutorial, you did the following tasks:

  • Konfigurerat en arbetsyta och förberett data för ett experiment.Configured a workspace and prepared data for an experiment.
  • Tränat med hjälp av en automatiserad regressionsmodell lokalt med anpassade parametrar.Trained by using an automated regression model locally with custom parameters.
  • Utforskat och granskat träningsresultat.Explored and reviewed training results.

Distribuera modellen med Azure Machine Learning.Deploy your model with Azure Machine Learning.