Realidad mixta y Azure (307): Aprendizaje automáticoMR and Azure 307: Machine learning


Nota

Los tutoriales de Mixed Reality Academy se han diseñado teniendo en cuenta HoloLens (1.ª generación) y los cascos envolventes de realidad mixta.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Por lo tanto, creemos que es importante conservar estos tutoriales para los desarrolladores que sigan buscando instrucciones sobre el desarrollo para esos dispositivos.As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. Estos tutoriales no se actualizarán con los conjuntos de herramientas o las interacciones más recientes que se usan para HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Se mantendrán para que sigan funcionando en los dispositivos compatibles.They will be maintained to continue working on the supported devices. Habrá una nueva serie de tutoriales que se publicarán en el futuro que mostrarán cómo desarrollar para HoloLens 2.There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. Este aviso se actualizará con un vínculo a esos tutoriales cuando se publiquen.This notice will be updated with a link to those tutorials when they are posted.


Inicio del producto final

En este curso, aprenderá a agregar funcionalidades de Machine Learning (ML) a una aplicación de realidad mixta mediante Azure Machine Learning Studio (clásico).In this course, you will learn how to add Machine Learning (ML) capabilities to a mixed reality application using Azure Machine Learning Studio (classic).

Azure machine learning Studio (clásico) es un servicio de Microsoft, que proporciona a los desarrolladores un gran número de algoritmos de aprendizaje automático, que pueden ayudar con la entrada, la salida, la preparación y la visualización de datos.Azure Machine Learning Studio (classic) is a Microsoft service, which provides developers with a large number of machine learning algorithms, which can help with data input, output, preparation, and visualization. A partir de estos componentes, es posible desarrollar un experimento de análisis predictivo, realizar una iteración en él y usarlo para entrenar el modelo.From these components, it is then possible to develop a predictive analytics experiment, iterate on it, and use it to train your model. Después del entrenamiento, puede hacer que el modelo sea operativo dentro de la nube de Azure, para que pueda puntuar nuevos datos.Following training, you can make your model operational within the Azure cloud, so that it can then score new data. Para obtener más información, visite la página Azure machine learning Studio (clásica).For more information, visit the Azure Machine Learning Studio (classic) page.

Una vez completado este curso, tendrá una aplicación de auriculares con un casco de realidad mixta y habrá aprendido lo siguiente:Having completed this course, you will have a mixed reality immersive headset application, and will have learned how do the following:

  1. Proporcione una tabla de datos de ventas al portal de Azure machine learning Studio (clásico) y diseñe un algoritmo para predecir las ventas futuras de los artículos más populares.Provide a table of sales data to the Azure Machine Learning Studio (classic) portal, and design an algorithm to predict future sales of popular items.
  2. Cree un proyecto de Unity, que puede recibir e interpretar los datos de predicción del servicio de ml.Create a Unity Project, which can receive and interpret prediction data from the ML service.
  3. Mostrar visualmente los datos de predication en el proyecto de Unity a través de la entrega de los artículos de ventas más populares, en una estantería.Display the predication data visually within the Unity Project, through providing the most popular sales items, on a shelf.

En su aplicación, depende del modo en que va a integrar los resultados con el diseño.In your application, it is up to you as to how you will integrate the results with your design. Este curso está diseñado para enseñarle a integrar un servicio de Azure con su proyecto de Unity.This course is designed to teach you how to integrate an Azure Service with your Unity Project. Es su trabajo usar el conocimiento que obtiene de este curso para mejorar su aplicación de realidad mixta.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

Este curso es un tutorial independiente, que no implica directamente ningún otro laboratorio de realidad mixta.This course is a self-contained tutorial, which does not directly involve any other Mixed Reality Labs.

Compatibilidad con dispositivosDevice support

CursoCourse HoloLensHoloLens Cascos envolventesImmersive headsets
Realidad mixta y Azure (307): Aprendizaje automáticoMR and Azure 307: Machine learning ✔️✔️ ✔️✔️

Nota

Aunque este curso se centra principalmente en los auriculares de Windows Mixed Reality inmersivo (VR), también puede aplicar lo que aprenda en este curso a Microsoft HoloLens.While this course primarily focuses on Windows Mixed Reality immersive (VR) headsets, you can also apply what you learn in this course to Microsoft HoloLens. A medida que siga con el curso, verá notas sobre cualquier cambio que deba usar para admitir HoloLens.As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. Al usar HoloLens, puede observar algún Eco durante la captura de voz.When using HoloLens, you may notice some echo during voice capture.

Requisitos previosPrerequisites

Nota

Este tutorial está diseñado para desarrolladores que tienen experiencia básica con Unity y C#.This tutorial is designed for developers who have basic experience with Unity and C#. Tenga en cuenta también que los requisitos previos y las instrucciones escritas dentro de este documento representan lo que se ha probado y comprobado en el momento de la escritura (2018 de mayo).Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (May 2018). Puede usar el software más reciente, como se indica en el artículo instalar las herramientas, aunque no se debe suponer que la información de este curso se ajusta perfectamente a lo que encontrará en el software más reciente que el que se indica a continuación.You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you'll find in newer software than what's listed below.

Se recomienda el siguiente hardware y software para este curso:We recommend the following hardware and software for this course:

Antes de comenzarBefore you start

Para evitar que se produzcan problemas al compilar este proyecto, se recomienda encarecidamente que cree el proyecto mencionado en este tutorial en una carpeta raíz o cerca de la raíz (las rutas de acceso de carpeta largas pueden producir problemas en tiempo de compilación).To avoid encountering issues building this project, it is strongly suggested that you create the project mentioned in this tutorial in a root or near-root folder (long folder paths can cause issues at build-time).

Capítulo 1: configuración de la cuenta de Azure StorageChapter 1 - Azure Storage Account setup

Para usar la API de traductor de Azure, tendrá que configurar una instancia del servicio para que esté disponible para la aplicación.To use the Azure Translator API, you will need to configure an instance of the service to be made available to your application.

  1. Inicie sesión en el portal de Azure.Log in to the Azure Portal.

    Nota

    Si aún no tiene una cuenta de Azure, tendrá que crear una.If you do not already have an Azure account, you will need to create one. Si sigue este tutorial en una situación de aula o de laboratorio, pregunte al instructor o a uno de los Proctors para obtener ayuda para configurar la nueva cuenta.If you are following this tutorial in a classroom or lab situation, ask your instructor or one of the proctors for help setting up your new account.

  2. Una vez que haya iniciado sesión, haga clic en cuentas de almacenamiento en el menú de la izquierda.Once you are logged in, click on Storage Accounts in the left menu.

    Configuración de Azure Storage cuenta

    Nota

    Es posible que la palabra nuevo se haya reemplazado por crear un recurso, en portales más recientes.The word New may have been replaced with Create a resource, in newer portals.

  3. En la pestaña cuentas de almacenamiento , haga clic en Agregar.On the Storage Accounts tab, click on Add.

    Configuración de Azure Storage cuenta

  4. En el panel crear cuenta de almacenamiento :In the Create Storage Account panel:

    1. Inserte un nombre para la cuenta. tenga en cuenta que este campo solo acepta números y letras minúsculas.Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. En modelo de implementación, seleccione Resource Manager.For Deployment model, select Resource manager.

    3. En tipo de cuenta, seleccione almacenamiento (uso general V1).For Account kind, select Storage (general purpose v1).

    4. En Rendimiento, seleccione Estándar.For Performance, select Standard.

    5. En replicación , seleccione almacenamiento con redundancia geográfica con acceso de lectura (RA-grs).For Replication select Read-access-geo-redundant storage (RA-GRS).

    6. Deje la transferencia segura requerida como deshabilitada.Leave Secure transfer required as Disabled.

    7. Seleccione una opción en Suscripción.Select a Subscription.

    8. Elija un grupo de recursos o cree uno nuevo.Choose a Resource Group or create a new one. Un grupo de recursos proporciona una manera de supervisar, controlar el acceso, aprovisionar y administrar la facturación de una colección de recursos de Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Se recomienda mantener todos los servicios de Azure asociados a un único proyecto (por ejemplo, estos laboratorios) en un grupo de recursos común).It is recommended to keep all the Azure services associated with a single project (e.g. such as these labs) under a common resource group).

      Si desea leer más información sobre los grupos de recursos de Azure, visite el artículo sobre el grupo de recursos.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    9. Determine la Ubicación del grupo de recursos (si va a crear un nuevo grupo de recursos).Determine the Location for your resource group (if you are creating a new Resource Group). Idealmente, la ubicación estará en la región donde se ejecutará la aplicación.The location would ideally be in the region where the application would run. Algunos recursos de Azure solo están disponibles en determinadas regiones.Some Azure assets are only available in certain regions.

  5. También deberá confirmar que ha comprendido los términos y condiciones que se aplican a este servicio.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    Configuración de Azure Storage cuenta

  6. Una vez que haya hecho clic en crear, tendrá que esperar a que se cree el servicio, lo que puede tardar un minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. Una vez que se crea la instancia de servicio, aparecerá una notificación en el portal.A notification will appear in the portal once the Service instance is created.

    Configuración de Azure Storage cuenta

Capítulo 2: el Azure Machine Learning Studio (clásico)Chapter 2 - The Azure Machine Learning Studio (classic)

Para usar el Azure machine learning, deberá configurar una instancia del servicio machine learning para que esté disponible para la aplicación.To use the Azure Machine Learning, you will need to configure an instance of the Machine Learning service to be made available to your application.

  1. En Azure portal, haga clic en nuevo en la esquina superior izquierda y busque machine learning Studio área de trabajo, presione entrar.In the Azure Portal, click on New in the top left corner, and search for Machine Learning Studio Workspace, press Enter.

    Azure Machine Learning Studio (clásico)

  2. La nueva página proporcionará una descripción de la machine learning Studio servicio del área de trabajo.The new page will provide a description of the Machine Learning Studio Workspace service. En la parte inferior izquierda de este mensaje, haga clic en el botón crear para crear una asociación con este servicio.At the bottom left of this prompt, click the Create button, to create an association with this service.

  3. Una vez que haya hecho clic en crear, aparecerá un panel donde debe proporcionar algunos detalles sobre el nuevo servicio de machine learning Studio:Once you have clicked on Create, a panel will appear where you need to provide some details about your new Machine Learning Studio service:

    1. Inserte el nombre de área de trabajo que desee para esta instancia de servicio.Insert your desired Workspace name for this service instance.

    2. Seleccione una opción en Suscripción.Select a Subscription.

    3. Elija un grupo de recursos o cree uno nuevo.Choose a Resource Group or create a new one. Un grupo de recursos proporciona una manera de supervisar, controlar el acceso, aprovisionar y administrar la facturación de una colección de recursos de Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Se recomienda mantener todos los servicios de Azure asociados a un único proyecto (por ejemplo, estos laboratorios) en un grupo de recursos común).It is recommended to keep all the Azure services associated with a single project (e.g. such as these labs) under a common resource group).

      Si desea leer más información sobre los grupos de recursos de Azure, visite el artículo sobre el grupo de recursos.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    4. Determine la Ubicación del grupo de recursos (si va a crear un nuevo grupo de recursos).Determine the Location for your resource group (if you are creating a new Resource Group). Idealmente, la ubicación estará en la región donde se ejecutará la aplicación.The location would ideally be in the region where the application would run. Algunos recursos de Azure solo están disponibles en determinadas regiones.Some Azure assets are only available in certain regions. Debe usar el mismo grupo de recursos que utilizó para crear el Azure Storage en el capítulo anterior.You should use the same resource group that you used for creating the Azure Storage in the previous Chapter.

    5. En la sección cuenta de almacenamiento , haga clic en usar existente, haga clic en el menú desplegable y, desde allí, haga clic en la cuenta de almacenamiento que creó en el último capítulo.For the Storage account section, click Use existing, then click the dropdown menu, and from there, click the Storage Account you created in the last Chapter.

    6. Seleccione el plan de tarifa del área de trabajo adecuado en el menú desplegable.Select the appropriate Workspace pricing tier for you, from the dropdown menu.

    7. En la sección plan de servicio Web , haga clic en crear nuevo y , a continuación, inserte un nombre en el campo de texto.Within the Web service plan section, click Create new, then insert a name for it in the text field.

    8. En la sección nivel de precios del plan de servicio Web , seleccione el nivel de precios que prefiera.From the Web service plan pricing tier section, select the price tier of your choice. Un nivel de prueba de desarrollo denominado DEVTEST Standard debe estar disponible sin cargo alguno.A development testing tier called DEVTEST Standard should be available to you at no charge.

    9. También deberá confirmar que ha comprendido los términos y condiciones que se aplican a este servicio.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    10. Haga clic en Crear.Click Create.

      Azure Machine Learning Studio (clásico)

  4. Una vez que haya hecho clic en crear, tendrá que esperar a que se cree el servicio, lo que puede tardar un minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. Una vez que se crea la instancia de servicio, aparecerá una notificación en el portal.A notification will appear in the portal once the Service instance is created.

    Azure Machine Learning Studio (clásico)

  6. Haga clic en la notificación para explorar la nueva instancia de servicio.Click on the notification to explore your new Service instance.

    Azure Machine Learning Studio (clásico)

  7. Haga clic en el botón ir a recurso de la notificación para explorar la nueva instancia de servicio.Click the Go to resource button in the notification to explore your new Service instance.

  8. En la página que se muestra, en la sección vínculos adicionales , haga clic en iniciar machine learning Studio, que dirigirá el explorador al portal de machine learning Studio .In the page displayed, under the Additional Links section, click Launch Machine Learning Studio, which will direct your browser to the Machine Learning Studio portal.

    Azure Machine Learning Studio (clásico)

  9. Use el botón iniciar sesión , en la parte superior derecha o en el centro, para iniciar sesión en el machine learning Studio (clásico).Use the Sign In button, at the top right or in the center, to log into your Machine Learning Studio (classic).

    Azure Machine Learning Studio (clásico)

Capítulo 3: configuración del conjunto de los Machine Learning Studio (clásico)Chapter 3 - The Machine Learning Studio (classic): Dataset setup

Una de las formas en que Machine Learning funcionan los algoritmos es analizar los datos existentes y, a continuación, intentar predecir resultados futuros basados en el conjunto de datos existente.One of the ways Machine Learning algorithms work is by analyzing existing data and then attempting to predict future results based on the existing data set. Por lo general, esto significa que los datos más existentes que tenga, mejor será el algoritmo para predecir resultados futuros.This generally means that the more existing data you have, the better the algorithm will be at predicting future results.

Se le proporciona una tabla de ejemplo, para este curso, denominada ProductsTableCSV, que se puede descargar aquí.A sample table is provided to you, for this course, called ProductsTableCSV and can be downloaded here.

Importante

El archivo. zip anterior contiene ProductsTableCSV y . unitypackage Tools, que necesitará en el capítulo 6.The above .zip file contains both the ProductsTableCSV and the .unitypackage, which you will need in Chapter 6. Este paquete también se proporciona en ese capítulo, aunque sea independiente del archivo CSV.This package is also provided within that Chapter, though separate to the csv file.

Este conjunto de datos de ejemplo contiene un registro de los objetos que mejor se venden cada hora de cada día del año 2017.This sample data set contains a record of the best-selling objects at every hour of each day of the year 2017.

La Machine Learning Studio (clásica): configuración del conjunto de

Por ejemplo, en el día 1 de 2017, a la 13:00 (hora 13), el artículo de mejor venta era Salt y pimiento.For example, on day 1 of 2017, at 1pm (hour 13), the best-selling item was salt and pepper.

Esta tabla de ejemplo contiene 9998 entradas.This sample table contains 9998 entries.

  1. Vuelva al portal de machine learning Studio (clásico) y agregue esta tabla como un conjunto de datos para los ml.Head back to the Machine Learning Studio (classic) portal, and add this table as a Dataset for your ML. Para ello, haga clic en el botón + nuevo en la esquina inferior izquierda de la pantalla.Do this by clicking the + New button in the bottom left corner of the screen.

    La Machine Learning Studio (clásica): configuración del conjunto de

  2. Una sección aparecerá en la parte inferior y, dentro de ella, en el panel de navegación de la izquierda.A section will come up from the bottom, and within that there is navigation panel on the left. Haga clic en conjunto de archivos y, a la derecha de, desde archivo local.Click Dataset, then to the right of that, From Local File.

    La Machine Learning Studio (clásica): configuración del conjunto de

  3. Cargue el nuevo conjunto de elementos siguiendo estos pasos:Upload the new Dataset by following these steps:

    1. Aparecerá la ventana cargar, donde puede examinar el disco duro para Ver el nuevo conjunto deThe upload window will appear, where you can Browse your hard drive for the new dataset.

      La Machine Learning Studio (clásica): configuración del conjunto de

    2. Una vez seleccionado, y de nuevo en la ventana de carga, deje la casilla sin marcar.Once selected, and back in the upload window, leave the checkbox unticked.

    3. En el campo de texto que aparece a continuación, escriba ProductsTableCSV.csv como nombre del conjunto de los (aunque debe agregarse automáticamente).In the text field below, enter ProductsTableCSV.csv as the name for the dataset (though should automatically be added).

    4. En el menú desplegable de tipo, seleccione archivo CSV genérico con un encabezado (. csv).Using the dropdown menu for Type, select Generic CSV File with a header (.csv).

    5. Presione la marca de verificación en la parte inferior derecha de la ventana de carga y se cargará el conjunto de resultados.Press the tick in the bottom right of the upload window, and your Dataset will be uploaded.

Capítulo 4: el Machine Learning Studio (clásico): el experimentoChapter 4 - The Machine Learning Studio (classic): The Experiment

Antes de poder compilar el sistema de aprendizaje automático, deberá compilar un experimento para validar su teoría sobre los datos.Before you can build your machine learning system, you will need to build an experiment, to validate your theory about your data. Con los resultados, sabrá si necesita más datos o si no hay ninguna correlación entre los datos y un resultado posible.With the results, you will know whether you need more data, or if there is no correlation between the data and a possible outcome.

Para empezar a crear un experimento:To start creating an experiment:

  1. Haga clic de nuevo en el botón + nuevo situado en la parte inferior izquierda de la página y, a continuación, haga clic en experimento en blanco de experimento > .Click again on the + New button on the bottom left of the page, then click on Experiment > Blank Experiment.

    El Machine Learning Studio (clásico): el experimento

  2. Se mostrará una nueva página con un experimento en blanco:A new page will be displayed with a blank Experiment:

  3. En el panel de la izquierda, expanda Saved datasets > My datasets y arrastre ProductsTableCSV al lienzo del experimento.From the panel on the left expand Saved Datasets > My Datasets and drag the ProductsTableCSV on to the Experiment Canvas.

    El Machine Learning Studio (clásico): el experimento

  4. En el panel de la izquierda, expanda ejemplo de transformación de datos > y dividir.In the panel on the left, expand Data Transformation > Sample and Split. A continuación, arrastre el elemento Split Data al lienzo del experimento.Then drag the Split Data item in to the Experiment Canvas. El elemento dividir datos dividirá el conjunto de datos en dos partes.The Split Data item will split the data set into two parts. Una parte que se utilizará para entrenar el algoritmo de aprendizaje automático.One part you will use for training the machine learning algorithm. La segunda parte se usará para evaluar la precisión del algoritmo generado.The second part will be used to evaluate the accuracy of the algorithm generated.

    El Machine Learning Studio (clásico): el experimento

  5. En el panel derecho (mientras está seleccionado el elemento dividir datos en el lienzo), edite la fracción de filas del primer conjunto de datos de salida a 0,7.In the right panel (while the Split Data item on the canvas is selected), edit the Fraction of rows in the first output dataset to 0.7. Esto dividirá los datos en dos partes, la primera parte será del 70% de los datos y la segunda parte será el 30% restante.This will split the data into two parts, the first part will be 70% of the data, and the second part will be the remaining 30%. Para asegurarse de que los datos se dividen de forma aleatoria, asegúrese de que la casilla División aleatoria permanece activada.To ensure that the data is split randomly, make sure the Randomized split checkbox remains checked.

    El Machine Learning Studio (clásico): el experimento

  6. Arrastre una conexión desde la base del elemento ProductsTableCSV del lienzo hasta la parte superior del elemento de datos dividido.Drag a connection from the base of the ProductsTableCSV item on the canvas to the top of the Split Data item. Esto conectará los elementos y enviará la salida del conjunto de datos ProductsTableCSV (los datos) a la entrada de datos divididos.This will connect the items and send the ProductsTableCSV dataset output (the data) to the Split Data input.

    El Machine Learning Studio (clásico): el experimento

  7. En el panel experimentos en el lado izquierdo, expanda machine learning > entrenar.In the Experiments panel on the left side, expand Machine Learning > Train. Arrastre el elemento entrenar modelo hacia el lienzo del experimento.Drag the Train Model item out in to the Experiment canvas. El lienzo debería tener el mismo aspecto que el siguiente.Your canvas should look the same as the below.

    El Machine Learning Studio (clásico): el experimento

  8. Desde la **parte inferior izquierdadel elemento _* Split Data* , arrastre una conexión a la parte superior derecha del elemento Train Model (entrenar modelo ).From the **bottom left_ of the _* Split Data* item drag a connection to the top right of the Train Model item. El modelo de entrenamiento usará la primera división del 70% del conjunto de filas para entrenar el algoritmo.The first 70% split from the dataset will be used by the Train Model to train the algorithm.

    El Machine Learning Studio (clásico): el experimento

  9. Seleccione el elemento entrenar modelo en el lienzo y, en el panel propiedades (en el lado derecho de la ventana del explorador), haga clic en el botón iniciar selector de columnas .Select the Train Model item on the canvas, and in the Properties panel (on the right-hand side of your browser window) click the Launch column selector button.

  10. En el cuadro de texto escriba Product y, a continuación, presione entrar; Product se establecerá como una columna para entrenar las predicciones.In the text box type product and then press Enter, product will be set as a column to train predictions. Después, haga clic en la marca de verificación en la esquina inferior derecha para cerrar el cuadro de diálogo de selección.Following this, click on the tick in the bottom-right corner to close the selection dialog.

    El Machine Learning Studio (clásico): el experimento

  11. Va a entrenar un algoritmo de regresión logística multiclase para predecir el producto más vendido en función de la hora del día y la fecha.You are going to train a Multiclass Logistic Regression algorithm to predict the most sold product based on the hour of the day and the date. Sin embargo, queda fuera del ámbito de este documento la explicación de los detalles de los distintos algoritmos proporcionados por Azure Machine Learning Studio. puede encontrar más información en la hoja de referencia rápida de algoritmos de machine learningIt is beyond the scope of this document to explain the details of the different algorithms provided by the Azure Machine Learning studio, though, you can find out more from the Machine Learning Algorithm Cheat Sheet

  12. En el panel elementos del experimento de la izquierda, expanda machine learning > inicializar > clasificación del modelo y arrastre el elemento de regresión logística multiclase al lienzo del experimento.From the experiment items panel on the left, expand Machine Learning > Initialize Model > Classification, and drag the Multiclass Logistic Regression item on to the experiment canvas.

  13. Conecte la salida, desde la parte inferior de la regresión logística multiclase, a la entrada superior izquierda del elemento entrenar modelo .Connect the output, from the bottom of the Multiclass Logistic Regression, to the top-left input of the Train Model item.

    El Machine Learning Studio (clásico): el experimento

  14. En la lista de elementos del experimento en el panel de la izquierda, expanda machine learning > puntuación y arrastre el elemento puntuar modelo al lienzo.In list of experiment items in the panel on the left, expand Machine Learning > Score, and drag the Score Model item on to the canvas.

  15. Conecte la salida, desde la parte inferior del modelo de tren, a la entrada superior izquierda del modelo de puntuación.Connect the output, from the bottom of the Train Model, to the top-left input of the Score Model.

  16. Conecte la salida inferior derecha de Split Data (dividir datos) a la entrada superior derecha del elemento score Model (puntuar modelo ).Connect the bottom-right output from Split Data, to the top-right input of the Score Model item.

    El Machine Learning Studio (clásico): el experimento

  17. En la lista de elementos del experimento en el panel de la izquierda, expanda machine learning > evaluar y arrastre el elemento Evaluar modelo al lienzo.In the list of Experiment items in the panel on the left, expand Machine Learning > Evaluate, and drag the Evaluate Model item onto the canvas.

  18. Conecte el resultado del modelo de puntuación a la entrada superior izquierda del modelo de evaluación.Connect the output from the Score Model to the top-left input of the Evaluate Model.

    El Machine Learning Studio (clásico): el experimento

  19. Ha creado su primer experimento Machine Learning.You have built your first Machine Learning Experiment. Ahora puede guardar y ejecutar el experimento.You can now save and run the experiment. En el menú de la parte inferior de la página, haga clic en el botón Guardar para guardar el experimento y, a continuación, haga clic en Ejecutar para iniciar el experimento.In the menu at the bottom of the page, click on the Save button to save your experiment and then click Run to the start the experiment.

    El Machine Learning Studio (clásico): el experimento

  20. Puede ver el Estado del experimento en la parte superior derecha del lienzo.You can see the status of the experiment in the top-right of the canvas. Espere unos instantes hasta que finalice el experimento.Wait a few moments for the experiment to finish.

    Si tiene un conjunto de datos grande (mundo real), es probable que el experimento tarde horas en ejecutarse.If you have a big (real world) dataset it is likely that the experiment could take hours to run.

    El Machine Learning Studio (clásico): el experimento

  21. Haga clic con el botón derecho en el elemento Evaluar modelo del lienzo y, en el menú contextual, mantenga el mouse sobre los resultados de la evaluación y seleccione visualizar.Right click on the Evaluate Model item in the canvas and from the context menu hover the mouse over Evaluation Results, then select Visualize.

    El Machine Learning Studio (clásico): el experimento

  22. Los resultados de la evaluación se mostrarán mostrando los resultados previstos frente a los resultados reales.The evaluation results will be displayed showing the predicted outcomes versus the actual outcomes. Esto utiliza el 30% del conjunto de filas original, que se dividió anteriormente, para evaluar el modelo.This uses the 30% of the original dataset, that was split earlier, for evaluating the model. Puede ver que los resultados no son excelentes; lo ideal es que el número más alto de cada fila sea el elemento resaltado en las columnas.You can see the results are not great, ideally you would have the highest number in each row be the highlighted item in the columns.

    El Machine Learning Studio (clásico): el experimento

  23. Cierre los resultados.Close the Results.

  24. Para usar el modelo de Machine Learning recién entrenado, debe exponerlo como un servicio Web.To use your newly trained Machine Learning model you need to expose it as a Web Service. Para ello, haga clic en el elemento de menú configurar servicio Web en el menú de la parte inferior de la página y haga clic en servicio Web predictivo.To do this, click on the Set Up Web Service menu item in the menu at the bottom of the page, and click on Predictive Web Service.

    El Machine Learning Studio (clásico): el experimento

  25. Se creará una nueva pestaña y se combinará el modelo de entrenamiento para crear el nuevo servicio Web.A new tab will be created, and the train model merged to create the new web service.

  26. En el menú de la parte inferior de la página, haga clic en Guardar y, a continuación, haga clic en Ejecutar.In the menu at the bottom of the page click Save, then click Run. Verá el estado actualizado en la esquina superior derecha del lienzo del experimento.You will see the status updated in the top-right corner of the experiment canvas.

    El Machine Learning Studio (clásico): el experimento

  27. Una vez que haya finalizado la ejecución, aparecerá un botón implementar servicio Web en la parte inferior de la página.Once it has finished running, a Deploy Web Service button will appear at the bottom of the page. Está listo para implementar el servicio Web.You are ready to deploy the web service. Haga clic en implementar servicio Web (clásico) en el menú de la parte inferior de la página.Click Deploy Web Service (Classic) in the menu at the bottom of the page.

    El Machine Learning Studio (clásico): el experimento

    Es posible que el explorador le solicite que permita un elemento emergente, que debe permitir, aunque es posible que tenga que volver a presionar implementar servicio Web si no se muestra la página implementar.Your browser may prompt to allow a pop-up, which you should allow, though you may need to press Deploy Web Service again, if the deploy page does not show.

  28. Una vez creado el experimento, se le redirigirá a una página de Panel en la que se mostrará la clave de API .Once the Experiment has been created you will be redirected to a Dashboard page where you will have your API Key displayed. Cópielo en un bloc de notas por el momento, lo necesitará en el código muy pronto.Copy it into a notepad for the moment, you will need it in your code very soon. Una vez que haya anotado la clave de API, haga clic en el botón solicitud/respuesta en la sección punto de conexión predeterminado debajo de la clave.Once you have noted your API Key, click on the REQUEST/RESPONSE button in the Default Endpoint section underneath the Key.

    El Machine Learning Studio (clásico): el experimento

    Nota

    Si hace clic en probar en esta página, podrá especificar los datos de entrada y ver la salida.If you click Test in this page, you will be able to enter input data and view the output. Especifique el día y la hora.Enter the day and hour. Deje la entrada del producto en blanco.Leave the product entry blank. A continuación, haga clic en el botón confirmar .Then click the Confirm button. La salida en la parte inferior de la página mostrará el JSON que representa la probabilidad de que cada producto sea la elección.The output on the bottom of the page will show the JSON representing the likelihood of each product being the choice.

  29. Se abrirá una nueva página web, en la que se mostrarán las instrucciones y algunos ejemplos sobre la estructura de la solicitud requerida por el Machine Learning Studio (clásico).A new web page will open up, displaying the instructions and some examples about the Request structure required by the Machine Learning Studio (classic). Copie el URI de solicitud que se muestra en esta página en el Bloc de notas.Copy the Request URI displayed in this page, into your notepad.

    El Machine Learning Studio (clásico): el experimento

Ahora ha creado un sistema de aprendizaje automático que proporciona el producto más probable que se venda en función de los datos de compra históricos, correlacionados con la hora del día y el día del año.You have now built a machine learning system that provides the most likely product to be sold based on historical purchasing data, correlated with the time of the day and day of the year.

Para llamar al servicio Web, necesitará la dirección URL del punto de conexión de servicio y una clave de API para el servicio.To call the web service, you will need the URL for the service endpoint and an API Key for the service. Haga clic en la pestaña consumo , en el menú superior.Click on the Consume tab, from the top menu.

En la página información de consumo se mostrará la información necesaria para llamar al servicio web desde el código.The Consumption Info page will display the information you will need to call the web service from your code. Realice una copia de la clave principal y la dirección URL de solicitud-respuesta .Take a copy of the Primary Key and the Request-Response URL. Los necesitará en el siguiente capítulo.You will need these in the next Chapter.

Capítulo 5: configuración del proyecto de UnityChapter 5 - Setting up the Unity Project

Configure y pruebe sus auriculares de la realidad mixta.Set up and test your Mixed Reality Immersive Headset.

Nota

No necesitará controladores de movimiento para este curso.You will not require Motion Controllers for this course. Si necesita ayuda para configurar el casco envolvente, haga clic aquí.If you need support setting up the Immersive Headset, please click HERE.

  1. Abra Unity y cree un nuevo proyecto de Unity denominado Mr _ MachineLearning.Open Unity and create a new Unity Project called MR_MachineLearning. Asegúrese de que el tipo de proyecto está establecido en 3D.Make sure the project type is set to 3D.

  2. Con Unity abierto, merece la pena comprobar que el Editor de scripts predeterminado está establecido en Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Vaya a Editar > preferencias y, a continuación, en la nueva ventana, vaya a herramientas externas.Go to Edit > Preferences and then from the new window, navigate to External Tools. Cambie el Editor de script externo a Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Cierre la ventana preferencias .Close the Preferences window.

  3. A continuación, vaya a configuración de compilación de archivos > y cambie la plataforma a plataforma universal de Windows; para ello, haga clic en el botón *cambiar plataforma _.Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the *Switch Platform _ button.

  4. Asegúrese también de que:Also make sure that:

    1. _ Dispositivo de destino* está establecido en cualquier dispositivo._ Target Device* is set to Any Device.

      Para Microsoft HoloLens, establezca el dispositivo de destino en hololens.For the Microsoft HoloLens, set Target Device to HoloLens.

    2. El tipo de compilación se establece en D3D.Build Type is set to D3D.

    3. SDK está establecido en instalado más recientemente.SDK is set to Latest installed.

    4. La versión de Visual Studio está establecida en instalación más reciente.Visual Studio Version is set to Latest installed.

    5. Compilar y ejecutar está establecido en equipo local.Build and Run is set to Local Machine.

    6. No se preocupe por la configuración de escenas ahora, ya que se proporcionan más adelante.Do not worry about setting up Scenes right now, as these are provided later.

    7. El resto de la configuración debe dejarse como predeterminada por ahora.The remaining settings should be left as default for now.

      Configuración del proyecto de Unity

  5. En la ventana configuración de compilación , haga clic en el botón Configuración del reproductor ; se abrirá el panel relacionado en el espacio donde se encuentra el Inspector .In the Build Settings window, click on the Player Settings button, this will open the related panel in the space where the Inspector is located.

  6. En este panel, deben comprobarse algunas opciones de configuración:In this panel, a few settings need to be verified:

    1. En la pestaña otros valores :In the Other Settings tab:

      1. La versión de scripting en tiempo de ejecución debe ser experimental (.net 4,6 equivalente)Scripting Runtime Version should be Experimental (.NET 4.6 Equivalent)

      2. El back-end de scripting debe ser *.net Scripting Backend should be **.NET_* _

      3. _ El nivel de compatibilidad de la API * debe ser .net 4,6_ API Compatibility Level* should be .NET 4.6

        Configuración del proyecto de Unity

    2. En la pestaña configuración de publicación , en capacidades, seleccione:Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

        Configuración del proyecto de Unity

    3. Más abajo en el panel, en la configuración de XR (se encuentra debajo de configuración de publicación), tick Virtual Reality compatible, asegúrese de que se ha agregado el SDK de Windows Mixed Reality .Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added

      Configuración del proyecto de Unity

  7. De nuevo en la configuración de compilación , los proyectos de C# de Unity ya no están atenuados; Marque la casilla situada junto a este.Back in Build Settings Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  8. Cierre la ventana Build Settings (Configuración de compilación).Close the Build Settings window.

  9. Guarde el proyecto (archivo > guardar proyecto).Save your Project (FILE > SAVE PROJECT).

Capítulo 6: importar el paquete de Unity de MLProductsChapter 6 - Importing the MLProducts Unity Package

En este curso, tendrá que descargar un paquete de recursos de Unity llamado Azure-Mr-307. unitypackage Tools.For this course, you will need to download a Unity Asset Package called Azure-MR-307.unitypackage. Este paquete viene completo con una escena, con todos los objetos de que se han creado previamente, por lo que puede centrarse en conseguir que todo funcione.This package comes complete with a scene, with all objects in that prebuilt, so you can focus on getting it all working. Se proporciona el script ShelfKeeper , aunque solo contiene las variables públicas para la estructura de configuración de la escena.The ShelfKeeper script is provided, though only holds the public variables, for the purpose of scene setup structure. Tendrá que realizar todas las demás secciones.You will need to do all other sections.

Para importar este paquete:To import this package:

  1. Con el panel de Unity delante de usted, haga clic en recursos en el menú de la parte superior de la pantalla y, luego, haga clic en importar paquete, paquete personalizado.With the Unity dashboard in front of you, click on Assets in the menu at the top of the screen, then click on Import Package, Custom Package.

    Importación del paquete Unity de MLProducts

  2. Use el selector de archivos para seleccionar el paquete Azure-Mr-307. unitypackage Tools y haga clic en abrir.Use the file picker to select the Azure-MR-307.unitypackage package and click Open.

  3. Se le mostrará una lista de los componentes de este recurso.A list of components for this asset will be displayed to you. Confirme la importación haciendo clic en importar.Confirm the import by clicking Import.

    Importación del paquete Unity de MLProducts

  4. Una vez que haya finalizado la importación, observará que algunas nuevas carpetas aparecen en el panel del proyecto de Unity.Once it has finished importing, you will notice that some new folders have appeared in your Unity Project Panel. Estos son los modelos 3D y los materiales respectivos que forman parte de la escena previamente realizada en la que trabajará.Those are the 3D models and the respective materials that are part of the pre-made scene you will work on. En este curso, escribirá la mayor parte del código.You will write the majority of the code in this course.

    Importación del paquete Unity de MLProducts

  5. Dentro de la carpeta panel del proyecto , haga clic en la carpeta escenas y haga doble clic en la escena dentro de (llamado MR_MachineLearningScene).Within the Project Panel folder, click on the Scenes folder and double click on the scene inside (called MR_MachineLearningScene). La escena se abrirá (consulte la imagen siguiente).The scene will open (see image below). Si faltan los rombos rojos, simplemente haga clic en el botón Gizmos , en la parte superior derecha del Panel de juego.If the red diamonds are missing, simply click the Gizmos button, at the top right of the Game Panel.

    Importación del paquete Unity de MLProducts

Capítulo 7: comprobación de los archivos dll en UnityChapter 7 - Checking the DLLs in Unity

Para aprovechar el uso de las bibliotecas JSON (que se usan para serializar y deserializar), se ha implementado un archivo DLL de Newtonsoft con el paquete que se ha incorporado.To leverage the use of JSON libraries (used for serializing and deserializing), a Newtonsoft DLL has been implemented with the package you brought in. La biblioteca debe tener la configuración correcta, aunque merece la pena realizar una comprobación (especialmente si tiene problemas con el código que no funciona).The library should have the correct configuration, though it is worth checking (particularly if you are having issues with code not working).

Para ello:To do so:

  • Haga clic con el botón izquierdo en el archivo Newtonsoft dentro de la carpeta plugins y mire en el panel Inspector.Left-click on the Newtonsoft file inside the Plugins folder and look at the Inspector panel. Asegúrese de que se realiza una marca en cualquier plataforma .Make sure Any Platform is ticked. Vaya a la pestaña UWP y asegúrese también de que no se ha activado el proceso .Go to the UWP tab and also ensure Don't process is ticked.

    Importación de los archivos dll en Unity

Capítulo 8: creación de la clase ShelfKeeperChapter 8 - Create the ShelfKeeper class

La clase ShelfKeeper hospeda métodos que controlan la interfaz de usuario y los productos generados en la escena.The ShelfKeeper class hosts methods that control the UI and products spawned in the scene.

Como parte del paquete importado, se le proporcionará esta clase, aunque está incompleta.As part of the imported package, you will have been given this class, though it is incomplete. Ahora es el momento de completar esa clase:It is now time to complete that class:

  1. Haga doble clic en el script ShelfKeeper , dentro de la carpeta scripts , para abrirlo con Visual Studio 2017.Double click on the ShelfKeeper script, within the Scripts folder, to open it with Visual Studio 2017.

  2. Reemplace todo el código existente en el script con el código siguiente, que establece la fecha y la hora, y tiene un método para mostrar un producto.Replace all the code existing in the script with the following code, which sets the time and date and has a method to show a product.

    using UnityEngine;
    
    public class ShelfKeeper : MonoBehaviour
    {
        /// <summary>
        /// Provides this class Singleton-like behavior
        /// </summary>
        public static ShelfKeeper instance;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for data
        /// </summary>
        public TextMesh dateText;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for time
        /// </summary>
        public TextMesh timeText;
    
        /// <summary>
        /// Provides references to the spawn locations for the products prefabs
        /// </summary>
        public Transform[] spawnPoint;
    
        private void Awake()
        {
            instance = this;
        }
    
        /// <summary>
        /// Set the text of the date in the scene
        /// </summary>
        public void SetDate(string day, string month)
        {
            dateText.text = day + " " + month;
        }
    
        /// <summary>
        /// Set the text of the time in the scene
        /// </summary>
        public void SetTime(string hour)
        {
            timeText.text = hour + ":00";
        }
    
        /// <summary>
        /// Spawn a product on the shelf by providing the name and selling grade
        /// </summary>
        /// <param name="name"></param>
        /// <param name="sellingGrade">0 being the best seller</param>
        public void SpawnProduct(string name, int sellingGrade)
        {
            Instantiate(Resources.Load(name),
                spawnPoint[sellingGrade].transform.position, spawnPoint[sellingGrade].transform.rotation);
        }
    }
    
  3. Asegúrese de guardar los cambios en Visual Studio antes de volver a Unity.Be sure to save your changes in Visual Studio before returning to Unity.

  4. De nuevo en el editor de Unity, compruebe que la clase ShelfKeeper es similar a la siguiente:Back in the Unity Editor, check that the ShelfKeeper class looks like the below:

    Crear la clase ShelfKeeper

    Importante

    Si el script no tiene destinos de referencia (es decir, Date (malla de texto)), simplemente arrastre los objetos correspondientes del Panel jerarquía a los campos de destino.If your script does not have the reference targets (i.e. Date (Text Mesh)), simply drag the corresponding objects from the Hierarchy Panel, into the target fields. Consulte a continuación la explicación, si es necesario:See below for explanation, if needed:

    1. Abra la matriz de puntos de generación dentro del script del componente ShelfKeeper . para ello, haga clic en ella.Open the Spawn Point array within the ShelfKeeper component script by left-clicking it. Una subsección aparecerá denominada size, que indica el tamaño de la matriz.A sub-section will appear called Size, which indicates the size of the array. Escriba 3 en el cuadro de texto junto a tamaño y presione entrar; se crearán tres ranuras debajo.Type 3 into the textbox next to Size and press Enter, and three slots will be created beneath.

    2. Dentro de la jerarquía , expanda el objeto Time display (haciendo clic con el botón izquierdo en la flecha situada junto a él).Within the Hierarchy expand the Time Display object (by left-clicking the arrow beside it). A continuación, haga clic en la **cámara principal_ desde dentro de la* jerarquía* de, para que el Inspector muestre su información.Next click the *Main Camera_ from within the _* Hierarchy**, so that the Inspector shows its information.

    3. Seleccione la cámara principal en el Panel jerarquía.Select the Main Camera in the Hierarchy Panel. Arrastre los objetos de fecha y hora desde el panel jerarquía hasta las ranuras de texto de fecha y hora del Inspector de la cámara principal en el componente ShelfKeeper .Drag the Date and Time objects from the Hierarchy Panel to the Date Text and Time Text slots within the Inspector of the Main Camera in the ShelfKeeper component.

    4. Arrastre los puntos de generación desde el Panel de jerarquía (debajo del objeto de estantería ) hasta los tres destinos de referencia de elemento debajo de la matriz de puntos de generación , como se muestra en la imagen.Drag the Spawn Points from the Hierarchy Panel (beneath the Shelf object) to the 3 Element reference targets beneath the Spawn Point array, as shown in the image.

      Crear la clase ShelfKeeper

Capítulo 9: creación de la clase ProductPredictionChapter 9 - Create the ProductPrediction class

La clase siguiente que va a crear es la clase ProductPrediction .The next class you are going to create is the ProductPrediction class.

Esta clase es responsable de:This class is responsible for:

  • Consultar la instancia de servicio de machine learning , que proporciona la fecha y hora actuales.Querying the Machine Learning Service instance, providing the current date and time.

  • Deserializar la respuesta JSON en datos utilizables.Deserializing the JSON response into usable data.

  • Interpretar los datos, recuperar los 3 productos recomendados.Interpreting the data, retrieving the 3 recommended products.

  • Llamar a los métodos de la clase ShelfKeeper para mostrar los datos de la escena.Calling the ShelfKeeper class methods to display the data in the Scene.

Para crear esta clase:To create this class:

  1. Vaya a la carpeta scripts , en el panel Proyecto.Go to the Scripts folder, in the Project Panel.

  2. Haga clic con el botón derecho en la carpeta, cree un > script de C#.Right-click inside the folder, Create > C# Script. Llame al script ProductPrediction.Call the script ProductPrediction.

  3. Haga doble clic en el nuevo script ProductPrediction para abrirlo con Visual Studio 2017.Double click on the new ProductPrediction script to open it with Visual Studio 2017.

  4. Si aparece el cuadro de diálogo se ha detectado la modificación del archivo , haga clic en *volver a cargar la solución.If the File Modification Detected dialog pops up, click *Reload Solution.

  5. Agregue los siguientes espacios de nombres en la parte superior de la clase ProductPrediction:Add the following namespaces to the top of the ProductPrediction class:

    using System;
    using System.Collections.Generic;
    using UnityEngine;
    using System.Linq;
    using Newtonsoft.Json;
    using UnityEngine.Networking;
    using System.Runtime.Serialization;
    using System.Collections;
    
  6. Dentro de la clase ProductPrediction , inserte los dos objetos siguientes, que se componen de un número de clases anidadas.Inside the ProductPrediction class insert the following two objects which are composed of a number of nested classes. Estas clases se usan para serializar y deserializar el archivo JSON para el servicio Machine Learning.These classes are used to serialize and deserialize the JSON for the Machine Learning Service.

        /// <summary>
        /// This object represents the Prediction request
        /// It host the day of the year and hour of the day
        /// The product must be left blank when serialising
        /// </summary>
        public class RootObject
        {
            public Inputs Inputs { get; set; }
        }
    
        public class Inputs
        {
            public Input1 input1 { get; set; }
        }
    
        public class Input1
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
        /// <summary>
        /// This object containing the deserialised Prediction result
        /// It host the list of the products
        /// and the likelihood of them being sold at current date and time
        /// </summary>
        public class Prediction
        {
            public Results Results { get; set; }
        }
    
        public class Results
        {
            public Output1 output1;
        }
    
        public class Output1
        {
            public string type;
            public Value value;
        }
    
        public class Value
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
  7. A continuación, agregue las siguientes variables sobre el código anterior (de modo que el código relacionado con JSON esté en la parte inferior del script, debajo del resto del código y fuera del camino):Then add the following variables above the previous code (so that the JSON related code is at the bottom of the script, below all other code, and out of the way):

        /// <summary>
        /// The 'Primary Key' from your Machine Learning Portal
        /// </summary>
        private string authKey = "-- Insert your service authentication key here --";
    
        /// <summary>
        /// The 'Request-Response' Service Endpoint from your Machine Learning Portal
        /// </summary>
        private string serviceEndpoint = "-- Insert your service endpoint here --";
    
        /// <summary>
        /// The Hour as set in Windows
        /// </summary>
        private string thisHour;
    
        /// <summary>
        /// The Day, as set in Windows
        /// </summary>
        private string thisDay;
    
        /// <summary>
        /// The Month, as set in Windows
        /// </summary>
        private string thisMonth;
    
        /// <summary>
        /// The Numeric Day from current Date Conversion
        /// </summary>
        private string dayOfTheYear;
    
        /// <summary>
        /// Dictionary for holding the first (or default) provided prediction 
        /// from the Machine Learning Experiment
        /// </summary>    
        private Dictionary<string, string> predictionDictionary;
    
        /// <summary>
        /// List for holding product prediction with name and scores
        /// </summary>
        private List<KeyValuePair<string, double>> keyValueList;
    

    Importante

    Asegúrese de insertar la clave principal y el punto de conexión de solicitud-respuesta, desde el portal de machine learning, en las variables aquí.Make sure to insert the primary key and request-response endpoint, from the Machine Learning Portal, into the variables here. Las siguientes imágenes muestran dónde habría tomado la clave y el punto de conexión de.The below images show where you would have taken the key and endpoint from.

    El Machine Learning Studio (clásico): el experimento

    El Machine Learning Studio (clásico): el experimento

  8. Inserte este código dentro del método Start () .Insert this code within the Start() method. Se llama al método Start () cuando se inicializa la clase:The Start() method is called when the class initializes:

        void Start()
        {
            // Call to get the current date and time as set in Windows
            GetTodayDateAndTime();
    
            // Call to set the HOUR in the UI
            ShelfKeeper.instance.SetTime(thisHour);
    
            // Call to set the DATE in the UI
            ShelfKeeper.instance.SetDate(thisDay, thisMonth);
    
            // Run the method to Get Predication from Azure Machine Learning
            StartCoroutine(GetPrediction(thisHour, dayOfTheYear));
        }
    
  9. El siguiente es el método que recopila la fecha y la hora de Windows y las convierte en un formato que el experimento de Machine Learning puede utilizar para comparar con los datos almacenados en la tabla.The following is the method that collects the date and time from Windows and converts it into a format that our Machine Learning Experiment can use to compare with the data stored in the table.

        /// <summary>
        /// Get current date and hour
        /// </summary>
        private void GetTodayDateAndTime()
        {
            // Get today date and time
            DateTime todayDate = DateTime.Now;
    
            // Extrapolate the HOUR
            thisHour = todayDate.Hour.ToString();
    
            // Extrapolate the DATE
            thisDay = todayDate.Day.ToString();
            thisMonth = todayDate.ToString("MMM");
    
            // Extrapolate the day of the year
            dayOfTheYear = todayDate.DayOfYear.ToString();
        }
    
  10. Puede eliminar el método Update () , ya que esta clase no lo usará.You can delete the Update() method since this class will not use it.

  11. Agregue el método siguiente, que comunicará la fecha y hora actuales con el punto de conexión de Machine Learning y recibirá una respuesta en formato JSON.Add the following method which will communicate the current date and time to the Machine Learning endpoint and receive a response in JSON format.

        private IEnumerator GetPrediction(string timeOfDay, string dayOfYear)
        {
            // Populate the request object 
            // Using current day of the year and hour of the day
            RootObject ro = new RootObject
            {
                Inputs = new Inputs
                {
                    input1 = new Input1
                    {
                        ColumnNames = new List<string>
                        {
                            "day",
                            "hour",
                        "product"
                        },
                        Values = new List<List<string>>()
                    }
                }
            };
    
            List<string> l = new List<string>
            {
                dayOfYear,
                timeOfDay,
                ""
            };
    
            ro.Inputs.input1.Values.Add(l);
    
            Debug.LogFormat("Score request built");
    
            // Serialize the request
            string json = JsonConvert.SerializeObject(ro);
    
            using (UnityWebRequest www = UnityWebRequest.Post(serviceEndpoint, "POST"))
            {
                byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
                www.uploadHandler = new UploadHandlerRaw(jsonToSend);
    
                www.downloadHandler = new DownloadHandlerBuffer();
                www.SetRequestHeader("Authorization", "Bearer " + authKey);
                www.SetRequestHeader("Content-Type", "application/json");
                www.SetRequestHeader("Accept", "application/json");
    
                yield return www.SendWebRequest();
                string response = www.downloadHandler.text;
    
                // Deserialize the response
                DataContractSerializer serializer;
                serializer = new DataContractSerializer(typeof(string));
                DeserialiseJsonResponse(response);
            }
        }
    
  12. Agregue el método siguiente, que es responsable de deserializar la respuesta JSON y de comunicar el resultado de la deserialización a la clase ShelfKeeper .Add the following method, which is responsible for deserializing the JSON response, and communicating the result of the deserialization to the ShelfKeeper class. Este resultado será el nombre de los tres elementos previstos para vender más en la fecha y hora actuales.This result will be the names of the three items predicted to sell the most at current date and time. Inserte el código siguiente en la clase ProductPrediction , debajo del método anterior.Insert the code below into the ProductPrediction class, below the previous method.

        /// <summary>
        /// Deserialize the response received from the Machine Learning portal
        /// </summary>
        public void DeserialiseJsonResponse(string jsonResponse)
        {
            // Deserialize JSON
            Prediction prediction = JsonConvert.DeserializeObject<Prediction>(jsonResponse);
            predictionDictionary = new Dictionary<string, string>();
    
            for (int i = 0; i < prediction.Results.output1.value.ColumnNames.Count; i++)
            {
                if (prediction.Results.output1.value.Values[0][i] != null)
                {
                    predictionDictionary.Add(prediction.Results.output1.value.ColumnNames[i], prediction.Results.output1.value.Values[0][i]);
                }
            }
    
            keyValueList = new List<KeyValuePair<string, double>>();
    
            // Strip all non-results, by adding only items of interest to the scoreList
            for (int i = 0; i < predictionDictionary.Count; i++)
            {
                KeyValuePair<string, string> pair = predictionDictionary.ElementAt(i);
                if (pair.Key.StartsWith("Scored Probabilities"))
                {
                    // Parse string as double then simplify the string key so to only have the item name
                    double scorefloat = 0f;
                    double.TryParse(pair.Value, out scorefloat);
                    string simplifiedName =
                        pair.Key.Replace("\"", "").Replace("Scored Probabilities for Class", "").Trim();
                    keyValueList.Add(new KeyValuePair<string, double>(simplifiedName, scorefloat));
                }
            }
    
            // Sort Predictions (results will be lowest to highest)
            keyValueList.Sort((x, y) => y.Value.CompareTo(x.Value));
    
            // Spawn the top three items, from the keyValueList, which we have sorted
            for (int i = 0; i < 3; i++)
            {
                ShelfKeeper.instance.SpawnProduct(keyValueList[i].Key, i);
            }
    
            // Clear lists in case of reuse
            keyValueList.Clear();
            predictionDictionary.Clear();
        }
    
  13. Guarde Visual Studio y vuelva a la sección Unity.Save Visual Studio and head back to Unity.

  14. Arrastre el script de la clase ProductPrediction desde la carpeta script hasta el objeto Camera principal .Drag the ProductPrediction class script from the Script folder, onto the Main Camera object.

  15. Guarde la escena y el archivo de proyecto > Guardar escena/archivo > Guardar proyecto.Save your scene and project File > Save Scene/File > Save Project.

Capítulo 10: compilar la solución UWPChapter 10 - Build the UWP Solution

Ahora es el momento de compilar el proyecto como una solución de UWP, de modo que pueda ejecutarse como una aplicación independiente.It is now time to build your project as a UWP solution, so that it can run as a standalone application.

Para compilar:To Build:

  1. Guarde la escena actual haciendo clic en archivo > Guardar escenas.Save the current scene by clicking on File > Save Scenes.

  2. Ir a la > configuración de compilación de archivosGo to File > Build Settings

  3. Active la casilla denominada proyectos de C# de Unity (esto es importante porque le permitirá editar las clases una vez completada la compilación).Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  4. Haga clic en Agregar escenas abiertas,Click on Add Open Scenes,

  5. Haga clic en Generar.Click Build.

    Compilar la solución de UWP

  6. Se le pedirá que seleccione la carpeta en la que desea compilar la solución.You will be prompted to select the folder where you want to build the Solution.

  7. Cree una carpeta compilaciones y, dentro de esa carpeta, cree otra carpeta con un nombre adecuado de su elección.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  8. Haga clic en la nueva carpeta y, a continuación, haga clic en Seleccionar carpeta para iniciar la compilación en esa ubicación.Click your new folder and then click Select Folder, to begin the build at that location.

    Compilar la solución de UWP

    Compilar la solución de UWP

  9. Una vez que Unity termine de compilar (puede tardar algún tiempo), se abrirá una ventana del Explorador de archivos en la ubicación de la compilación (Compruebe la barra de tareas, ya que es posible que no aparezca siempre por encima de las ventanas, pero le notificará la adición de una nueva ventana).Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build (check your task bar, as it may not always appear above your windows, but will notify you of the addition of a new window).

Capítulo 11: implementación de la aplicaciónChapter 11 - Deploy your Application

Para implementar la aplicación:To deploy your application:

  1. Vaya a la nueva compilación de Unity (la carpeta de la aplicación ) y abra el archivo de solución con Visual Studio.Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. Con Visual Studio abierto, debe restaurar los paquetes NuGet, lo que se puede hacer al hacer clic con el botón derecho en la solución de MachineLearningLab_Build, desde el Explorador de soluciones (que se encuentra a la derecha de Visual Studio) y, a continuación, hacer clic en restaurar paquetes NuGet:With Visual Studio open, you need to Restore NuGet Packages, which can be done through right-clicking your MachineLearningLab_Build solution, from the Solution Explorer (found to the right of Visual Studio), and then clicking Restore NuGet Packages:

    Agregar paquetes NuGet

  3. En la configuración de soluciones, seleccione depurar.In the Solution Configuration select Debug.

  4. En la plataforma de la solución, seleccione x86, equipo local.In the Solution Platform, select x86, Local Machine.

    En el caso de Microsoft HoloLens, es posible que le resulte más fácil establecer esto en el equipo remoto, de modo que no esté anclado al equipo.For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. Sin embargo, también tendrá que hacer lo siguiente:Though, you will need to also do the following:

    • Conozca la dirección IP de HoloLens, que puede encontrarse en la configuración > red & Internet > Wi-Fi > opciones avanzadas. IPv4 es la dirección que debe usar.Know the IP Address of your HoloLens, which can be found within the Settings > Network & Internet > Wi-Fi > Advanced Options; the IPv4 is the address you should use.
    • Asegurarse de que el modo de desarrollador está activado; se encuentra en configuración > actualizar & > de seguridad para desarrolladores.Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    Agregar paquetes NuGet

  5. Vaya al menú compilar y haga clic en implementar solución para transferir localmente la aplicación a su equipo.Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  6. La aplicación debe aparecer ahora en la lista de aplicaciones instaladas, lista para iniciarse.Your App should now appear in the list of installed apps, ready to be launched.

Al ejecutar la aplicación de realidad mixta, verá la banco que se configuró en la escena de Unity y, desde la inicialización, se capturarán los datos que configuró en Azure.When you run the Mixed Reality application, you will see the bench that was set up in your Unity scene, and from initialization, the data you set up within Azure will be fetched. Los datos se deserializarán dentro de la aplicación y los tres resultados principales de la fecha y hora actuales se proporcionarán visualmente, como tres modelos en la banco.The data will be deserialized within your application, and the three top results for your current date and time will be provided visually, as three models on the bench.

La aplicación Machine Learning finalizadaYour finished Machine Learning application

Enhorabuena, ha creado una aplicación de realidad mixta que aprovecha las Azure Machine Learning para hacer predicciones de datos y mostrarlas en la escena.Congratulations, you built a mixed reality app that leverages the Azure Machine Learning to make data predictions and display it on your scene.

Agregar paquetes NuGet

EjercicioExercise

Ejercicio 1Exercise 1

Experimente con el criterio de ordenación de la aplicación y tenga en cuenta que las tres predicciones inferiores aparecen en la estantería, ya que estos datos también podrían resultar útiles.Experiment with the sort order of your application and have the three bottom predictions appear on the shelf, as this data would potentially be useful also.

Ejercicio 2Exercise 2

El uso de tablas de Azure rellenará una nueva tabla con información meteorológica y creará un nuevo experimento con los datos.Using Azure Tables populate a new table with weather information and create a new experiment using the data.