Öğretici: taksi Fares 'yi tahmin etmek için otomatik makine öğrenimi kullanmaTutorial: Use automated machine learning to predict taxi fares

Uygulama hedefi: YesBasic Edition EvetEnterprise edition                   (Enterprise Edition 'A yükseltme)APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

Bu öğreticide, NYC TAXI tarifeli havayolu fiyatlarını tahmin etmek üzere bir gerileme modeli oluşturmak için Azure Machine Learning ' de otomatik makine öğrenimini kullanırsınız.In this tutorial, you use automated machine learning in Azure Machine Learning to create a regression model to predict NYC taxi fare prices. Bu işlem, eğitim verilerini ve yapılandırma ayarlarını kabul eder ve en iyi modele ulaşmak için farklı özellik normalleştirme/standartlaştırma yöntemlerinin, modellerinin ve hiper parametre ayarlarının birleşimleri aracılığıyla otomatik olarak yinelenir.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.

Akış diyagramı

Bu öğreticide aşağıdaki görevleri öğreneceksiniz:In this tutorial you learn the following tasks:

  • Azure açık veri kümelerini kullanarak verileri indirme, dönüştürme ve TemizlemeDownload, transform, and clean data using Azure Open Datasets
  • Otomatik makine öğrenimi regresyon modelini eğitmeTrain an automated machine learning regression model
  • Model doğruluğunu hesaplaCalculate model accuracy

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don’t have an Azure subscription, create a free account before you begin. Azure Machine Learning ücretsiz veya ücretli sürümünü bugün deneyin.Try the free or paid version of Azure Machine Learning today.

ÖnkoşullarPrerequisites

  • Zaten bir Azure Machine Learning çalışma alanınız veya Not defteri sanal makineniz yoksa Kurulum öğreticisini doldurun.Complete the setup tutorial if you don't already have an Azure Machine Learning workspace or notebook virtual machine.
  • Kurulum öğreticisini tamamladıktan sonra, aynı not defteri sunucusunu kullanarak öğreticiler/Regression-Automated-ml. ipynb Not defterini açın.After you complete the setup tutorial, open the tutorials/regression-automated-ml.ipynb notebook using the same notebook server.

Bu öğretici, kendi Yerel ortamınızdaçalıştırmak istiyorsanız GitHub 'da da kullanılabilir.This tutorial is also available on GitHub if you wish to run it in your own local environment. Gerekli paketleri almak için pip install azureml-sdk[automl] azureml-opendatasets azureml-widgets çalıştırın.Run pip install azureml-sdk[automl] azureml-opendatasets azureml-widgets to get the required packages.

Verileri indirme ve hazırlamaDownload and prepare data

Gerekli paketleri içeri aktarın.Import the necessary packages. Açık veri kümeleri paketi, indirilmeden önce tarih parametrelerini kolayca filtrelemek için her bir veri kaynağını temsil eden bir sınıf içerir (örneğinNycTlcGreen).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

Taxı verilerini tutmak için bir veri çerçevesi oluşturarak başlayın.Begin by creating a dataframe to hold the taxi data. Spark olmayan bir ortamda çalışırken, açık veri kümeleri, büyük veri kümeleriyle MemoryError önlemek için belirli sınıflarla tek seferde bir aydan verilerin indirilmesini sağlar.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.

Taxı verilerini indirmek için, bir kerede bir ay sonra bir kez ve veri çerçevesini bloktan kaçınmak için her aydan rastgele örnek 2.000 kayıtları green_taxi_df.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. Sonra verileri önizleyin.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)
Konağında VendorIDvendorID lpepPickupDatetimelpepPickupDatetime lpepDropoffDatetimelpepDropoffDatetime passengerCountpassengerCount Üçlü mesafetripDistance PulocationıdpuLocationId DolocationıddoLocationId PickupboylampickupLongitude PickupenlempickupLatitude Açılan BoylamdropoffLongitude ...... paymentTypepaymentType fareAmountfareAmount ınaextra MtavergisimtaTax improvementSurchargeimprovementSurcharge tipAmounttipAmount tollsAmounttollsAmount EhailücretehailFee totalAmounttotalAmount Üçlü türtripType
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 Yok.None Yok.None -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 nBirnan 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 1\.1 0.690.69 Yok.None Yok.None -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 nBirnan 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 1\.1 0,450.45 Yok.None Yok.None -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 nBirnan 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 1\.1 0.000.00 Yok.None Yok.None -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 nBirnan 13,8013.80 1.001.00
12696271269627 1\.1 2015-01-01 05:04:102015-01-01 05:04:10 2015-01-01 05:06:232015-01-01 05:06:23 1\.1 0.500.50 Yok.None Yok.None -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 nBirnan 5.005.00 1.001.00
811755811755 1\.1 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 Yok.None Yok.None -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 nBirnan 7,807.80 1.001.00
737281737281 1\.1 2015-01-03 12:27:312015-01-03 12:27:31 2015-01-03 12:33:522015-01-03 12:33:52 1\.1 0,900.90 Yok.None Yok.None -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 nBirnan 6,806.80 1.001.00
113951113951 1\.1 2015-01-09 23:25:512015-01-09 23:25:51 2015-01-09 23:39:522015-01-09 23:39:52 1\.1 3,303.30 Yok.None Yok.None -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 nBirnan 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 1\.1 1,191.19 Yok.None Yok.None -73,94-73.94 40,7140.71 -73,95-73.95 ...... 1\.1 7,007.00 0.000.00 0.500.50 0,30.3 1,751.75 0.000.00 nBirnan 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 1\.1 0,650.65 Yok.None Yok.None -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 nBirnan 6,306.30 1.001.00

10 satır × 23 sütun10 rows × 23 columns

Artık ilk veriler yüklendikten sonra, toplama tarih/saati alanından çeşitli zamana dayalı özellikler oluşturmak için bir işlev tanımlayın.Now that the initial data is loaded, define a function to create various time-based features from the pickup datetime field. Bu işlem, ay numarası, ay günü, haftanın günü ve günün saati için yeni alanlar oluşturur ve modelin zaman tabanlı mevsimsellik açısından çarpaya izin verir.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. build_time_features() işlevini TAXI verilerinde her satıra tekrarlayarak uygulamak için veri çerçevesindeki apply() işlevini kullanın.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)
Konağında VendorIDvendorID lpepPickupDatetimelpepPickupDatetime lpepDropoffDatetimelpepDropoffDatetime passengerCountpassengerCount Üçlü mesafetripDistance PulocationıdpuLocationId DolocationıddoLocationId PickupboylampickupLongitude PickupenlempickupLatitude Açılan BoylamdropoffLongitude ...... improvementSurchargeimprovementSurcharge tipAmounttipAmount tollsAmounttollsAmount EhailücretehailFee totalAmounttotalAmount Üçlü türtripType 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 Yok.None Yok.None -73,88-73.88 40,8440.84 -73,94-73.94 ...... 0,30.3 0.000.00 0.000.00 nBirnan 16,3016.30 1.001.00 1\.1 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 1\.1 0.690.69 Yok.None Yok.None -73,96-73.96 40,8140.81 -73,96-73.96 ...... 0,30.3 0.000.00 0.000.00 nBirnan 6,306.30 1.001.00 1\.1 2020 1\.1 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 1\.1 0,450.45 Yok.None Yok.None -73,92-73.92 40,7640.76 -73,91-73.91 ...... 0,30.3 0.000.00 0.000.00 nBirnan 4,804.80 1.001.00 1\.1 1\.1 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 1\.1 0.000.00 Yok.None Yok.None -73,81-73.81 40,7040.70 -73,82-73.82 ...... 0,30.3 0.000.00 0.000.00 nBirnan 13,8013.80 1.001.00 1\.1 1717 55 22
12696271269627 1\.1 2015-01-01 05:04:102015-01-01 05:04:10 2015-01-01 05:06:232015-01-01 05:06:23 1\.1 0.500.50 Yok.None Yok.None -73,92-73.92 40,7640.76 -73,92-73.92 ...... 00 0.000.00 0.000.00 nBirnan 5.005.00 1.001.00 1\.1 1\.1 33 55
811755811755 1\.1 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 Yok.None Yok.None -73,96-73.96 40,7240.72 -73,95-73.95 ...... 0,30.3 0.000.00 0.000.00 nBirnan 7,807.80 1.001.00 1\.1 44 66 1919
737281737281 1\.1 2015-01-03 12:27:312015-01-03 12:27:31 2015-01-03 12:33:522015-01-03 12:33:52 1\.1 0,900.90 Yok.None Yok.None -73,88-73.88 40,7640.76 -73,87-73.87 ...... 0,30.3 0.000.00 0.000.00 nBirnan 6,806.80 1.001.00 1\.1 33 55 1212
113951113951 1\.1 2015-01-09 23:25:512015-01-09 23:25:51 2015-01-09 23:39:522015-01-09 23:39:52 1\.1 3,303.30 Yok.None Yok.None -73,96-73.96 40,7240.72 -73,91-73.91 ...... 0,30.3 0.000.00 0.000.00 nBirnan 13,8013.80 1.001.00 1\.1 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 1\.1 1,191.19 Yok.None Yok.None -73,94-73.94 40,7140.71 -73,95-73.95 ...... 0,30.3 1,751.75 0.000.00 nBirnan 9,559.55 1.001.00 1\.1 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 1\.1 0,650.65 Yok.None Yok.None -73,94-73.94 40,7140.71 -73,94-73.94 ...... 0,30.3 0.000.00 0.000.00 nBirnan 6,306.30 1.001.00 1\.1 2222 33 2323

10 satır × 27 sütun10 rows × 27 columns

Eğitim veya ek özellik oluşturma için ihtiyaç duymayabilmeniz gereken bazı sütunları kaldırın.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)

Verilerini temizlemekCleanse data

Her bir alanın Özet istatistiklerini görmek için yeni veri çerçevesinde describe() işlevini çalıştırın.Run the describe() function on the new dataframe to see summary statistics for each field.

green_taxi_df.describe()
Konağında VendorIDvendorID passengerCountpassengerCount Üçlü mesafetripDistance PickupboylampickupLongitude PickupenlempickupLatitude Açılan BoylamdropoffLongitude Açılan EnlemdropoffLatitude 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
Ortalamamean 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
STDstd 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
dkmin 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
%2525% 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
%7575% 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
Biçimlendirmax 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

Özet istatistiklerinde, mantıksal veya daha fazla alan içeren birkaç alanın, model doğruluğunu azaltacak şekilde olduğunu görürsünüz.From the summary statistics, you see that there are several fields that have outliers or values that will reduce model accuracy. İlk olarak, Manhattan alanının sınırları dahilinde olacak şekilde Enlem/Long alanlarını filtreleyin.First filter the lat/long fields to be within the bounds of the Manhattan area. Bu, diğer özelliklerle ilişkisine göre, daha uzun bir süre içinde daha fazla vergilenme veya gezilerin filtreleneceği.This will filter out longer taxi trips or trips that are outliers in respect to their relationship with other features.

Ek olarak, tripDistance alanı sıfırdan büyük ancak 31 milden küçük (iki Lat/Long çifti arasındaki haversinüsü uzaklığı) olarak filtreleyin.Additionally filter the tripDistance field to be greater than zero but less than 31 miles (the haversine distance between the two lat/long pairs). Bu, tutarsız seyahat maliyeti olan uzun süreli döngüleri ortadan kaldırır.This eliminates long outlier trips that have inconsistent trip cost.

Son olarak, totalAmount alanı taksi Fares için negatif değerler içerir ve bu, modelimizin bağlamında mantıklı değildir ve passengerCount alanı minimum değerleri sıfır olan hatalı verilere sahiptir.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.

Sorgu işlevlerini kullanarak bu anomali filtreleme yapın ve ardından eğitim için gereksiz son sütunu kaldırın.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)

Temizleşildiği gibi çalıştığından emin olmak için verileri yeniden describe() çağırın.Call describe() again on the data to ensure cleansing worked as expected. Artık makine öğrenimi model eğitimi için kullanılacak, hazırlanmış ve yeniden hazırlanan bir TAXI, tatil ve hava durumu verisi ayarlamış olursunuz.You now have a prepared and cleansed set of taxi, holiday, and weather data to use for machine learning model training.

final_df.describe()

Çalışma alanını yapılandırmaConfigure workspace

Mevcut çalışma alanından bir çalışma alanı nesnesi oluşturun.Create a workspace object from the existing workspace. Çalışma alanı , Azure aboneliğinizi ve kaynak bilgilerinizi kabul eden bir sınıftır.A Workspace is a class that accepts your Azure subscription and resource information. Ayrıca, modelinizi izlemek ve izlemek için bir bulut kaynağı oluşturur.It also creates a cloud resource to monitor and track your model runs. Workspace.from_config(), config. JSON dosyasını okur ve kimlik doğrulama ayrıntılarını wsadlı bir nesneye yükler.Workspace.from_config() reads the file config.json and loads the authentication details into an object named ws. Bu öğreticideki kodun kalanında ws kullanılır.ws is used throughout the rest of the code in this tutorial.

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

Verileri eğitme ve test kümelerine BölSplit the data into train and test sets

scikit-learn kitaplığındaki train_test_split işlevini kullanarak verileri eğitim ve test kümelerine ayırın.Split the data into training and test sets by using the train_test_split function in the scikit-learn library. Bu işlev, model eğitimi için verileri x (Özellikler) veri kümesine ayırır ve test için y (tahmin edilecek değerler) veri kümesini gösterir.This function segregates the data into the x (features) data set for model training and the y (values to predict) data set for testing.

test_size parametresi, teste ayrılacak verilerin yüzdesini belirler.The test_size parameter determines the percentage of data to allocate to testing. random_state parametresi, tren test bölünmeleri belirleyici olacak şekilde rastgele oluşturucuya bir çekirdek ayarlar.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)

Bu adımın amacı, doğru doğruluğu ölçmek için modeli eğmekte kullanılmamış olan tamamlanmış modeli test etmek için veri noktalarına sahip değildir.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.

Diğer bir deyişle, iyi eğitilen bir modelin zaten görmemiş verilerden tahmine dayalı hale getirme yapabilmesi gerekir.In other words, a well-trained model should be able to accurately make predictions from data it hasn't already seen. Artık, bir makine öğrenimi modeline otomatik eğitim için hazırlanan veriler vardır.You now have data prepared for auto-training a machine learning model.

Otomatik olarak bir modeli eğitmeAutomatically train a model

Bir modeli otomatik olarak eğitmek için aşağıdaki adımları uygulayın:To automatically train a model, take the following steps:

  1. Deneme çalıştırmasının ayarlarını tanımlayın.Define settings for the experiment run. Eğitim verilerinizi yapılandırmaya ekleyin ve eğitim sürecini denetleyen ayarları değiştirin.Attach your training data to the configuration, and modify settings that control the training process.
  2. Model ayarlama için denemeyi gönder.Submit the experiment for model tuning. Deneme gönderdikten sonra işlem, farklı makine öğrenimi algoritmalarını ve hiper parametre ayarlarını kullanarak, tanımlı kısıtlamalarınız için uygun şekilde yinelenir.After submitting the experiment, the process iterates through different machine learning algorithms and hyperparameter settings, adhering to your defined constraints. Doğruluk ölçüsünü en iyi duruma getirerek en uygun modeli seçer.It chooses the best-fit model by optimizing an accuracy metric.

Eğitim ayarlarını tanımlamaDefine training settings

Eğitim için deneme parametresi ve model ayarlarını tanımlayın.Define the experiment parameter and model settings for training. Ayarlarıntam listesini görüntüleyin.View the full list of settings. Denemeyi bu varsayılan ayarlarla göndermek yaklaşık 5-20 dakika sürer, ancak daha kısa bir çalışma süresi istiyorsanız experiment_timeout_minutes parametresini küçültün.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.

ÖzellikProperty Bu öğreticideki değerValue in this tutorial AçıklamaDescription
iteration_timeout_minutesiteration_timeout_minutes 22 Her yineleme için dakika cinsinden zaman sınırı.Time limit in minutes for each iteration. Toplam çalışma zamanını azaltmak için bu değeri küçültün.Reduce this value to decrease total runtime.
experiment_timeout_minutesexperiment_timeout_minutes 2020 Deneme sona ermeden önce tüm yinelemelerin birleştirilebilmesi için geçmesi gereken en uzun süre.Maximum amount of time in minutes that all iterations combined can take before the experiment terminates.
enable_early_stoppingenable_early_stopping TrueTrue Puan, kısa vadede iyileştirilmediğinden erken sonlandırma için bayrak.Flag to enble early termination if the score is not improving in the short term.
primary_metricprimary_metric spearman_correlationspearman_correlation İyileştirmek istediğiniz ölçüm.Metric that you want to optimize. En uygun model bu ölçüme göre seçilecek.The best-fit model will be chosen based on this metric.
korturlamafeaturization Otomatikauto Otomatik, deneme kullanarak giriş verilerini önceden işleyebilir (eksik verileri işleme, metni sayısal olarak dönüştürme vb.)By using auto, the experiment can preprocess the input data (handling missing data, converting text to numeric, etc.)
ayrıntıverbosity logging.INFOlogging.INFO Günlüğe kaydetme düzeyini denetler.Controls the level of logging.
n_cross_validationsn_cross_validations 55 Doğrulama verileri belirtilmediğinde gerçekleştirilecek çapraz doğrulama bölme sayısı.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
}

Tanımlı eğitim ayarlarınızı bir AutoMLConfig nesnesine **kwargs parametresi olarak kullanın.Use your defined training settings as a **kwargs parameter to an AutoMLConfig object. Ayrıca, eğitim verilerinizi ve model türünü belirtin, bu durumda 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)

Not

Otomatik makine öğrenimi ön işleme adımları (özellik normalleştirme, eksik verileri işleme, metni sayısal olarak dönüştürme, vb.) temel modelin bir parçası haline gelir.Automated machine learning pre-processing steps (feature normalization, handling missing data, converting text to numeric, etc.) become part of the underlying model. Tahmin için model kullanılırken, eğitim sırasında uygulanan aynı ön işleme adımları, giriş verilerinize otomatik olarak uygulanır.When using the model for predictions, the same pre-processing steps applied during training are applied to your input data automatically.

Otomatik bir regresyon modeli eğitmeTrain the automatic regression model

Çalışma alanınızda bir deneme nesnesi oluşturun.Create an experiment object in your workspace. Deneme, bireysel çalışmalarınız için bir kapsayıcı olarak davranır.An experiment acts as a container for your individual runs. Tanımlanan automl_config nesnesini denemenize geçirin ve çalıştırma sırasında ilerlemeyi görüntülemek için çıktıyı True olarak ayarlayın.Pass the defined automl_config object to the experiment, and set the output to True to view progress during the run.

Denemeyi başlattıktan sonra, bu gösterilen çıkış, deney olarak canlı güncelleştirmeler çalışır.After starting the experiment, the output shown updates live as the experiment runs. Her yineleme için model türünü, çalışma süresini ve eğitim doğruluğunu görürsünüz.For each iteration, you see the model type, the run duration, and the training accuracy. Alan BEST ölçüm türünüz temelinde en iyi çalışan eğitim puanı ' nı izler.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

Sonuçları incelemeExplore the results

Jupyıter pencere öğesiyleotomatik eğitime ilişkin sonuçları keşfet.Explore the results of automatic training with a Jupyter widget. Pencere öğesi, eğitim doğruluğu ölçümleri ve meta verileri ile birlikte tüm bireysel çalıştırma yinelemelerini bir grafik ve tablo görmenizi sağlar.The widget allows you to see a graph and table of all individual run iterations, along with training accuracy metrics and metadata. Ayrıca, açılan seçiciyle, birincil ölçümünüzün farklı doğruluk ölçümlerine filtre uygulayabilirsiniz.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()

Jupyıter pencere öğesi jupi pencere öğesi çizimi Jupyter widget run details Jupyter widget plot

En iyi modeli almaRetrieve the best model

Yinelemeinizden en iyi modeli seçin.Select the best model from your iterations. get_output işlevi en iyi çalışmayı ve en son çağrıya yönelik olarak bulunan modeli döndürür.The get_output function returns the best run and the fitted model for the last fit invocation. get_outputüzerindeki aşırı yüklemeleri kullanarak, herhangi bir günlüğe kaydedilmiş ölçüm veya belirli bir yineleme için en iyi çalışma ve bağlı modeli alabilirsiniz.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)

En iyi modeli doğruluk testiTest the best model accuracy

Taksi Fares 'yi tahmin etmek için test verileri kümesindeki tahminleri çalıştırmak için en iyi modeli kullanın.Use the best model to run predictions on the test data set to predict taxi fares. İşlevi predict en iyi modeli kullanır ve x_test veri kümesinden y, seyahat maliyetideğerlerini tahmin eder.The function predict uses the best model and predicts the values of y, trip cost, from the x_test data set. İlk 10 tahmini maliyet değerini y_predictyazdır.Print the first 10 predicted cost values from y_predict.

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

Sonuçların root mean squared error hesaplayın.Calculate the root mean squared error of the results. Tahmin edilen değerlerle karşılaştırmak için y_test veri çerçevesini bir listeye dönüştürün.Convert the y_test dataframe to a list to compare to the predicted values. İşlevi mean_squared_error iki dizi değer alır ve aralarındaki ortalama kare içinde hata sayısını hesaplar.The function mean_squared_error takes two arrays of values and calculates the average squared error between them. Sonucun kare kökünü almak, y değişkeni ile aynıbirimlerde bir hata verir.Taking the square root of the result gives an error in the same units as the y variable, cost. EPI tarifeli havayolu tahminlerinin gerçek farlarından ne kadar olduğunu kabaca gösterir.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

Tam y_actual ve y_predict veri kümelerini kullanarak ortalama mutlak yüzde hatası (MAPE) hesaplamak için aşağıdaki kodu çalıştırın.Run the following code to calculate mean absolute percent error (MAPE) by using the full y_actual and y_predict data sets. Bu ölçüm, tahmin edilen ve gerçek değerler arasındaki mutlak bir farkı hesaplar ve tüm farkları toplar.This metric calculates an absolute difference between each predicted and actual value and sums all the differences. Ardından, bu toplamı gerçek değerlerin toplamının yüzdesi olarak ifade eder.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

İki tahmin doğruluk ölçümlerinde, modelin, veri kümesinin özelliklerinden, genellikle +-$4,00 ' de ve yaklaşık %15 ' te vergilenme Fareli tahminlerinde oldukça iyi olduğunu görürsünüz.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.

Geleneksel makine öğrenme modeli geliştirme sürecinde yüksek kaynak kullanımı yoğun ve çalıştırmak ve modelleri onlarca sonuçları karşılaştırmak için önemli bir etki alanı bilgilerini ve saat yatırım gerektirir.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. Otomatik makine öğrenimi kullanmak, senaryonuza yönelik birçok farklı modeli hızlıca test etmenin harika bir yoludur.Using automated machine learning is a great way to rapidly test many different models for your scenario.

Kaynakları temizlemeClean up resources

Diğer Azure Machine Learning öğreticileri çalıştırmayı planlıyorsanız, bu bölümü tamamlamayın.Do not complete this section if you plan on running other Azure Machine Learning tutorials.

Not defteri VM 'sini durdurStop the Notebook VM

Bir işlem örneği veya Not defteri VM 'si kullandıysanız, maliyeti azaltmak için kullanmadığınız sanal makineyi durdurun.If you used a compute instance or Notebook VM, stop the VM when you are not using it to reduce cost.

  1. Çalışma alanınızda işlem' ı seçin.In your workspace, select Compute.

  2. Listeden VM’yi seçin.From the list, select the VM.

  3. Durdur' u seçin.Select Stop.

  4. Sunucuyu yeniden kullanmaya hazırsanız Başlat' ı seçin.When you're ready to use the server again, select Start.

Her şeyi silDelete everything

Oluşturduğunuz kaynakları kullanmayı planlamıyorsanız, herhangi bir ücret ödemezsiniz.If you don't plan to use the resources you created, delete them, so you don't incur any charges.

  1. Azure portalının en sol tarafındaki Kaynak gruplarını seçin.In the Azure portal, select Resource groups on the far left.
  2. Listeden oluşturduğunuz kaynak grubunu seçin.From the list, select the resource group you created.
  3. Kaynak grubunu sil'i seçin.Select Delete resource group.
  4. Kaynak grubu adını girin.Enter the resource group name. Ardından Sil’i seçin.Then select Delete.

Ayrıca, kaynak grubunu koruyabilir ancak tek bir çalışma alanını silebilirsiniz.You can also keep the resource group but delete a single workspace. Çalışma alanı özelliklerini görüntüleyin ve Sil' i seçin.Display the workspace properties and select Delete.

Sonraki adımlarNext steps

Bu otomatik makine öğrenimi öğreticisinde aşağıdaki görevleri yaptınız:In this automated machine learning tutorial, you did the following tasks:

  • Bir deneme için çalışma alanı ve hazırlanan veriler yapılandırıldı.Configured a workspace and prepared data for an experiment.
  • Özel parametrelerle yerel olarak otomatik regresyon modeli kullanılarak eğitilen.Trained by using an automated regression model locally with custom parameters.
  • Araştırılan ve gözden geçirilmiş eğitim sonuçları.Explored and reviewed training results.

Modelinizi Azure Machine Learning ile dağıtın.Deploy your model with Azure Machine Learning.