Унифицированный аналитический инструмент для приема, вычисления или обработки данных, хранения данных, расширенной аналитики или машинного обучения и отображения всего в одном инструменте. Платформа сквозной аналитики данных, созданная для масштабирования и простоты использования.
Расширенная аналитика Synapse
Synapse может запускать код на основе искры, что приводит к разработке данных или разработке функций, а также к машинному обучению. В этой статье описывается, как обучить модель машинного обучения с помощью искры в синапсе.
Предпосылка
- Создайте службы машинного обучения Azure. Выберите регион так же, как для аналитики синапсов.
- Создайте репозиторий на гитхабе
- Подключиться к репозиторию в разделе управления
- Создайте блокнот pyspark.
- Запустите каждый пакетный оператор в отдельной ячейке в блокноте.
Настройка информации о рабочем пространстве
- Давайте настроим рабочую область для доступа
- Нужен идентификатор подписки, имя рабочей области и имя группы ресурсов.
- Давайте импортируем рабочее пространство
from azureml.core import Workspace
import azureml.core print(azureml.core.VERSION)
- когда я тестировал, это была 1.16.0
- Настроить рабочее пространство
ws = Workspace.get(name="wsname", subscription_id='subid', resource_group='rgname')
print('Workspace name: ' + ws.name, 'Azure region: ' + ws.location, 'Subscription id: ' + ws.subscription_id, 'Resource group: ' + ws.resource_group, sep = '\n')
ws.write_config(path='.azureml')
from azureml.core import Workspace from azureml.core.compute import ComputeTarget, AmlCompute from azureml.core.compute_target import ComputeTargetException ws = Workspace.from_config() # This automatically looks for a directory .azureml # Choose a name for your CPU cluster cpu_cluster_name = "cpu-cluster" # Verify that the cluster does not exist already try: cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name) print('Found existing cluster, use it.') except ComputeTargetException: compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',idle_seconds_before_scaledown=2400,min_nodes=0,max_nodes=4) cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config) cpu_cluster.wait_for_completion(show_output=True)
Получите набор данных для модели машинного обучения
from azureml.opendatasets import NycTlcGreen import pandas as pd from datetime import datetime from dateutil.relativedelta import relativedelta
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)
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)
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)
green_taxi_df.describe()
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)
final_df.describe()
Создать модель машинного обучения
from sklearn.model_selection import train_test_split x_train, x_test = train_test_split(final_df, test_size=0.2, random_state=223)
import logging automl_settings = { "iteration_timeout_minutes": 2, "experiment_timeout_hours": 0.3, "enable_early_stopping": True, "primary_metric": 'spearman_correlation', "featurization": 'auto', "verbosity": logging.INFO, "n_cross_validations": 5 }
from azureml.train.automl import AutoMLConfig automl_config = AutoMLConfig(task='regression', debug_log='automated_ml_errors.log', training_data=x_train, label_column_name="totalAmount", **automl_settings)
from azureml.core.experiment import Experiment experiment = Experiment(ws, "taxi-experiment-fromsynapsews") local_run = experiment.submit(automl_config, show_output=True)
best_run, fitted_model = local_run.get_output() print(best_run) print(fitted_model)
y_test = x_test.pop("totalAmount") y_predict = fitted_model.predict(x_test) print(y_predict[:10])
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
-Рассчитать MAPE и точность
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
Output:Model MAPE: 0.1393469862795163 Model Accuracy: 0.8606530137204838
Первоначально опубликовано на https://github.com.