MR 및 Azure 307: 기계 학습MR and Azure 307: Machine learning


참고

Mixed Reality 아카데미 자습서는 HoloLens(1세대) 및 Mixed Reality 몰입형 헤드셋을 염두에 두고 설계되었습니다.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. 따라서 이러한 디바이스 개발에 대한 지침을 계속 찾고 있는 개발자를 위해 이러한 자습서를 그대로 두는 것이 중요합니다.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. 이러한 자습서는 HoloLens 2에 사용되는 최신 도구 집합 또는 상호 작용으로 업데이트되지 않습니다.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. 대신 지원되는 디바이스에서 계속 작동하도록 유지 관리됩니다.They will be maintained to continue working on the supported devices. 향후에는 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. 이 알림은 게시 될 때 해당 자습서에 대 한 링크를 사용 하 여 업데이트 됩니다.This notice will be updated with a link to those tutorials when they are posted.


최종 제품-시작

이 과정에서는 Azure Machine Learning Studio (클래식)를 사용 하 여 혼합 현실 응용 프로그램에 Machine Learning (ML) 기능을 추가 하는 방법에 대해 설명 합니다.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 (클래식) 은 개발자에 게 데이터 입력, 출력, 준비 및 시각화에 도움이 될 수 있는 많은 수의 기계 학습 알고리즘을 제공 하는 Microsoft 서비스입니다.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. 이러한 구성 요소를 통해 예측 분석 실험을 개발 하 고,이를 반복 하 고, 모델을 학습 하는 데 사용할 수 있습니다.From these components, it is then possible to develop a predictive analytics experiment, iterate on it, and use it to train your model. 다음 교육을 통해 Azure 클라우드에서 모델을 작동 하도록 설정 하 여 새 데이터의 점수를 매길 수 있습니다.Following training, you can make your model operational within the Azure cloud, so that it can then score new data. 자세한 내용은 Azure Machine Learning Studio (클래식) 페이지를 참조 하세요.For more information, visit the Azure Machine Learning Studio (classic) page.

이 과정을 완료 하면 혼합 현실의 헤드셋 응용 프로그램을 사용할 수 있으며 다음 작업을 수행 하는 방법이 학습 됩니다.Having completed this course, you will have a mixed reality immersive headset application, and will have learned how do the following:

  1. Azure Machine Learning Studio (클래식) 포털에 판매 데이터 표를 제공 하 고 인기 있는 항목의 향후 판매를 예측 하는 알고리즘을 디자인 합니다.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. ML 서비스에서 예측 데이터를 수신 하 고 해석할 수 있는 Unity 프로젝트 를 만듭니다.Create a Unity Project, which can receive and interpret prediction data from the ML service.
  3. 선반에서 가장 인기 있는 판매 항목을 제공 하 여 Unity 프로젝트 내에서 폐색 데이터를 시각적으로 표시 합니다.Display the predication data visually within the Unity Project, through providing the most popular sales items, on a shelf.

응용 프로그램에서 결과를 디자인과 통합 하는 방법을 사용자가 결정 합니다.In your application, it is up to you as to how you will integrate the results with your design. 이 과정은 Azure 서비스를 Unity 프로젝트와 통합 하는 방법을 배울 수 있도록 설계 되었습니다.This course is designed to teach you how to integrate an Azure Service with your Unity Project. 이 과정에서 얻은 지식을 사용 하 여 혼합 현실 응용 프로그램을 개선 하는 것은 사용자의 작업입니다.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

이 과정은 다른 혼합 현실 랩을 직접 포함 하지 않는 자체 포함 된 자습서입니다.This course is a self-contained tutorial, which does not directly involve any other Mixed Reality Labs.

디바이스 지원Device support

과정Course HoloLensHoloLens 몰입형 헤드셋Immersive headsets
MR 및 Azure 307: 기계 학습MR and Azure 307: Machine learning ✔️✔️ ✔️✔️

참고

이 과정에서 주로 Windows Mixed Reality (VR) 헤드셋에 초점을 맞춘 반면,이 과정에서 학습 하는 내용을 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. 과정을 진행할 때 HoloLens를 지원 하기 위해 사용 해야 하는 모든 변경 내용에 대 한 메모를 볼 수 있습니다.As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. HoloLens를 사용 하는 경우 음성 캡처 중에 몇 가지 echo를 확인할 수 있습니다.When using HoloLens, you may notice some echo during voice capture.

사전 요구 사항Prerequisites

참고

이 자습서는 Unity 및 c #에 대 한 기본 경험이 있는 개발자를 위해 작성 되었습니다.This tutorial is designed for developers who have basic experience with Unity and C#. 또한이 문서에서 사전 요구 사항 및 작성 된 지침은 작성 시 테스트 되 고 확인 된 내용 (2018 일 수 있음)을 나타냅니다.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). 도구 설치 문서에 나와 있는 것 처럼 최신 소프트웨어를 무료로 사용할 수 있지만,이 과정의 정보가 아래 나열 된 것 보다 최신 소프트웨어에서 찾을 수 있는 것으로 간주 하면 안 됩니다.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.

이 과정에는 다음 하드웨어 및 소프트웨어를 권장 합니다.We recommend the following hardware and software for this course:

시작하기 전에Before you start

이 프로젝트를 빌드하는 데 문제가 발생 하지 않도록 하려면 루트 또는 루트 폴더에이 자습서에서 언급 한 프로젝트를 만드는 것이 좋습니다. (긴 폴더 경로는 빌드 시에 문제를 일으킬 수 있습니다.)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).

1 장-계정 설정 Azure StorageChapter 1 - Azure Storage Account setup

Azure Translator API를 사용 하려면 응용 프로그램에서 사용할 수 있도록 서비스 인스턴스를 구성 해야 합니다.To use the Azure Translator API, you will need to configure an instance of the service to be made available to your application.

  1. Azure Portal에 로그인 합니다.Log in to the Azure Portal.

    참고

    아직 Azure 계정이 없는 경우 새로 만들어야 합니다.If you do not already have an Azure account, you will need to create one. 교실 또는 랩 상황에서이 자습서를 수행 하는 경우 강사 또는 proctors 중 하나에 문의 하 여 새 계정을 설정 하는 데 도움이 될 수 있습니다.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. 로그인 되 면 왼쪽 메뉴에서 저장소 계정 을 클릭 합니다.Once you are logged in, click on Storage Accounts in the left menu.

    계정 설정 Azure Storage

    참고

    새 단어는 포털에서 리소스 만들기 로 대체 되었을 수 있습니다.The word New may have been replaced with Create a resource, in newer portals.

  3. 저장소 계정 탭에서 추가 를 클릭 합니다.On the Storage Accounts tab, click on Add.

    계정 설정 Azure Storage

  4. 저장소 계정 만들기 패널에서 다음을 수행 합니다.In the Create Storage Account panel:

    1. 계정에 대 한 이름을 삽입 합니다 .이 필드에는 숫자 및 소문자만 허용 됩니다.Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. 배포 모델에서 Resource manager 를 선택 합니다.For Deployment model, select Resource manager.

    3. 계정 종류 에 대해 저장소 (범용 v1) 를 선택 합니다.For Account kind, select Storage (general purpose v1).

    4. 성능표준 을 선택합니다.For Performance, select Standard.

    5. 복제 의 경우 읽기 액세스-지역 중복 저장소 (RA-GRS) 를 선택 합니다.For Replication select Read-access-geo-redundant storage (RA-GRS).

    6. 보안 전송을 사용 하지 않도록 설정 해야 합니다.Leave Secure transfer required as Disabled.

    7. 구독 을 선택합니다.Select a Subscription.

    8. 리소스 그룹을 선택 하거나 새 리소스 그룹 을 만듭니다.Choose a Resource Group or create a new one. 리소스 그룹은 Azure 자산의 컬렉션에 대 한 청구를 모니터링 하 고, 액세스를 제어 하 고, 프로 비전 하 고, 관리 하는 방법을 제공 합니다.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 단일 프로젝트와 연결 된 모든 Azure 서비스 (예: 이러한 랩)를 공용 리소스 그룹에 유지 하는 것이 좋습니다.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).

      Azure 리소스 그룹에 대 한 자세한 내용을 보려면 리소스 그룹 문서를 참조하세요.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    9. 새 리소스 그룹을 만드는 경우 리소스 그룹의 위치 를 확인 합니다.Determine the Location for your resource group (if you are creating a new Resource Group). 위치는 응용 프로그램이 실행 되는 영역에 있는 것이 가장 좋습니다.The location would ideally be in the region where the application would run. 일부 Azure 자산은 특정 지역 에서만 사용할 수 있습니다.Some Azure assets are only available in certain regions.

  5. 또한이 서비스에 적용 된 사용 약관을 이해 했는지 확인 해야 합니다.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    계정 설정 Azure Storage

  6. 만들기 를 클릭 한 후에는 서비스를 만들 때까지 기다려야 합니다 .이 작업이 몇 분 정도 걸릴 수 있습니다.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. 서비스 인스턴스를 만든 후 알림이 포털에 표시 됩니다.A notification will appear in the portal once the Service instance is created.

    계정 설정 Azure Storage

2 장-Azure Machine Learning Studio (클래식)Chapter 2 - The Azure Machine Learning Studio (classic)

Azure Machine Learning 을 사용 하려면 응용 프로그램에서 사용할 수 있도록 Machine Learning 서비스의 인스턴스를 구성 해야 합니다.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. Azure Portal의 왼쪽 위 모서리에서 새로 만들기 를 클릭 하 고 Machine Learning Studio 작업 영역 을 검색 하 고 enter 키를 누릅니다.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 (클래식)

  2. 새 페이지에 Machine Learning Studio 작업 영역 서비스에 대 한 설명이 제공 됩니다.The new page will provide a description of the Machine Learning Studio Workspace service. 이 프롬프트의 왼쪽 아래에서 만들기 단추를 클릭 하 여이 서비스와의 연결을 만듭니다.At the bottom left of this prompt, click the Create button, to create an association with this service.

  3. 만들기 를 클릭 하면 새 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. 이 서비스 인스턴스의 원하는 작업 영역 이름을 삽입 합니다.Insert your desired Workspace name for this service instance.

    2. 구독 을 선택합니다.Select a Subscription.

    3. 리소스 그룹을 선택 하거나 새 리소스 그룹 을 만듭니다.Choose a Resource Group or create a new one. 리소스 그룹은 Azure 자산의 컬렉션에 대 한 청구를 모니터링 하 고, 액세스를 제어 하 고, 프로 비전 하 고, 관리 하는 방법을 제공 합니다.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 단일 프로젝트와 연결 된 모든 Azure 서비스 (예: 이러한 랩)를 공용 리소스 그룹에 유지 하는 것이 좋습니다.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).

      Azure 리소스 그룹에 대 한 자세한 내용을 보려면 리소스 그룹 문서를 참조하세요.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    4. 새 리소스 그룹을 만드는 경우 리소스 그룹의 위치 를 확인 합니다.Determine the Location for your resource group (if you are creating a new Resource Group). 위치는 응용 프로그램이 실행 되는 영역에 있는 것이 가장 좋습니다.The location would ideally be in the region where the application would run. 일부 Azure 자산은 특정 지역 에서만 사용할 수 있습니다.Some Azure assets are only available in certain regions. 이전 장에서 Azure Storage를 만드는 데 사용한 것과 동일한 리소스 그룹을 사용 해야 합니다.You should use the same resource group that you used for creating the Azure Storage in the previous Chapter.

    5. 저장소 계정 섹션에서 기존 항목 사용 을 클릭 한 다음 드롭다운 메뉴를 클릭 하 고 여기에서 마지막 챕터에서 만든 저장소 계정을 클릭 합니다.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. 드롭다운 메뉴에서 적절 한 작업 영역 가격 책정 계층 을 선택 합니다.Select the appropriate Workspace pricing tier for you, from the dropdown menu.

    7. 웹 서비스 계획 섹션에서 새로 만들기 클릭 한 다음 텍스트 필드에 이름을 삽입 합니다.Within the Web service plan section, click Create new, then insert a name for it in the text field.

    8. 웹 서비스 계획 가격 책정 계층 섹션에서 원하는 가격 책정 계층을 선택 합니다.From the Web service plan pricing tier section, select the price tier of your choice. DEVTEST Standard 라는 개발 테스트 계층은 무료로 제공 되어야 합니다.A development testing tier called DEVTEST Standard should be available to you at no charge.

    9. 또한이 서비스에 적용 된 사용 약관을 이해 했는지 확인 해야 합니다.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    10. 만들기 를 클릭합니다.Click Create.

      Azure Machine Learning Studio (클래식)

  4. 만들기 를 클릭 한 후에는 서비스를 만들 때까지 기다려야 합니다 .이 작업이 몇 분 정도 걸릴 수 있습니다.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. 서비스 인스턴스를 만든 후 알림이 포털에 표시 됩니다.A notification will appear in the portal once the Service instance is created.

    Azure Machine Learning Studio (클래식)

  6. 알림을 클릭 하 여 새 서비스 인스턴스를 탐색 합니다.Click on the notification to explore your new Service instance.

    Azure Machine Learning Studio (클래식)

  7. 알림에서 리소스로 이동 단추를 클릭 하 여 새 서비스 인스턴스를 탐색 합니다.Click the Go to resource button in the notification to explore your new Service instance.

  8. 표시 되는 페이지의 추가 링크 섹션에서 시작 Machine Learning Studio 를 클릭 합니다. 그러면 브라우저를 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 (클래식)

  9. 오른쪽 위 또는 가운데에 있는 로그인 단추를 사용 하 여 Machine Learning Studio (클래식)에 로그인 합니다.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 (클래식)

3 장-Machine Learning Studio (클래식): 데이터 집합 설치Chapter 3 - The Machine Learning Studio (classic): Dataset setup

Machine Learning 알고리즘의 작동 방법 중 하나는 기존 데이터를 분석 한 다음 기존 데이터 집합을 기반으로 향후 결과를 예측 하는 것입니다.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. 이는 일반적으로 기존 데이터를 더 많이 사용 하는 것을 의미 하므로 이후 결과를 예측 하는 알고리즘이 더 좋아집니다.This generally means that the more existing data you have, the better the algorithm will be at predicting future results.

이 과정에서 ProductsTableCSV 이라는 샘플 테이블이 제공 되며 여기에서 다운로드할 수 있습니다.A sample table is provided to you, for this course, called ProductsTableCSV and can be downloaded here.

중요

위의 .zip 파일에는 ProductsTableCSVunitypackage 가 모두 포함 되어 있습니다 .이 파일은 6 장에서필요 합니다.The above .zip file contains both the ProductsTableCSV and the .unitypackage, which you will need in Chapter 6. 이 패키지는 csv 파일에 별도로 제공 되지만 해당 챕터에도 제공 됩니다.This package is also provided within that Chapter, though separate to the csv file.

이 샘플 데이터 집합에는 2017 년의 각 날짜의 매시간 가장 인기 있는 개체 레코드가 포함 되어 있습니다.This sample data set contains a record of the best-selling objects at every hour of each day of the year 2017.

Machine Learning Studio (클래식): 데이터 집합 설치

예를 들어 오후 1 시 (시간 13)에서 2017의 1 일에 가장 잘 팔리는 항목은 솔트 및 고추입니다.For example, on day 1 of 2017, at 1pm (hour 13), the best-selling item was salt and pepper.

이 샘플 테이블에는 9998 개의 항목이 포함 되어 있습니다.This sample table contains 9998 entries.

  1. Machine Learning Studio (클래식) 포털로 다시 이동 하 여이 테이블을 ML에 대 한 데이터 집합 으로 추가 합니다.Head back to the Machine Learning Studio (classic) portal, and add this table as a Dataset for your ML. 화면의 왼쪽 아래에 있는 + 새로 만들기 단추를 클릭 하 여이 작업을 수행 합니다.Do this by clicking the + New button in the bottom left corner of the screen.

    Machine Learning Studio (클래식): 데이터 집합 설치

  2. 섹션은 아래쪽에서 위쪽으로 제공 되며 왼쪽에는 탐색 패널이 있습니다.A section will come up from the bottom, and within that there is navigation panel on the left. 로컬 파일에서 데이터 집합을 클릭 한 다음 오른쪽에 있는 데이터 집합 을 클릭 합니다.Click Dataset, then to the right of that, From Local File.

    Machine Learning Studio (클래식): 데이터 집합 설치

  3. 다음 단계를 수행 하 여 새 데이터 집합 을 업로드 합니다.Upload the new Dataset by following these steps:

    1. 하드 드라이브에서 새 데이터 집합을 찾아볼 수 있는 업로드 창이 표시 됩니다.The upload window will appear, where you can Browse your hard drive for the new dataset.

      Machine Learning Studio (클래식): 데이터 집합 설치

    2. 을 선택 하 고 다시 업로드 창에서 읽으려고 확인란을 선택 취소 합니다.Once selected, and back in the upload window, leave the checkbox unticked.

    3. 아래 텍스트 필드에서 데이터 집합 이름으로 ProductsTableCSV.csv 를 입력 합니다 (자동으로 추가 해야 함).In the text field below, enter ProductsTableCSV.csv as the name for the dataset (though should automatically be added).

    4. 형식 에 대 한 드롭다운 메뉴를 사용 하 여 헤더 (.csv)가 포함 된 일반 CSV 파일 을 선택 합니다.Using the dropdown menu for Type, select Generic CSV File with a header (.csv).

    5. 업로드 창의 오른쪽 아래에 있는 틱을 누르면 데이터 집합이 업로드 됩니다.Press the tick in the bottom right of the upload window, and your Dataset will be uploaded.

4 장-Machine Learning Studio (클래식): 실험Chapter 4 - The Machine Learning Studio (classic): The Experiment

기계 학습 시스템을 구축 하려면 먼저 데이터에 대 한 이론적 유효성을 검사 하기 위해 실험을 빌드해야 합니다.Before you can build your machine learning system, you will need to build an experiment, to validate your theory about your data. 결과를 사용 하 여 더 많은 데이터가 필요한 지 또는 데이터와 가능한 결과 간의 상관 관계가 없는지를 알 수 있습니다.With the results, you will know whether you need more data, or if there is no correlation between the data and a possible outcome.

실험 만들기를 시작 하려면 다음을 수행 합니다.To start creating an experiment:

  1. 페이지 왼쪽 아래에 있는 + 새로 만들기 단추를 다시 클릭 하 고 > 빈 실험 실험을 클릭 합니다.Click again on the + New button on the bottom left of the page, then click on Experiment > Blank Experiment.

    Machine Learning Studio (클래식): 실험

  2. 새 페이지가 빈 실험으로 표시 됩니다.A new page will be displayed with a blank Experiment:

  3. 왼쪽 패널에서 저장 된 데이터 집합 > 내 데이터 집합 을 확장 하 고 ProductsTableCSV실험 캔버스로 끌어다 놓습니다.From the panel on the left expand Saved Datasets > My Datasets and drag the ProductsTableCSV on to the Experiment Canvas.

    Machine Learning Studio (클래식): 실험

  4. 왼쪽 패널에서 데이터 변환 > 샘플 및 분할 을 확장 합니다.In the panel on the left, expand Data Transformation > Sample and Split. 그런 다음 데이터 분할 항목을 실험 캔버스로 끌어다 놓습니다.Then drag the Split Data item in to the Experiment Canvas. 데이터 분할 항목은 데이터 집합을 두 부분으로 분할 합니다.The Split Data item will split the data set into two parts. 기계 학습 알고리즘을 학습 하는 데 사용 하는 한 부분입니다.One part you will use for training the machine learning algorithm. 두 번째 부분은 생성 된 알고리즘의 정확도를 평가 하는 데 사용 됩니다.The second part will be used to evaluate the accuracy of the algorithm generated.

    Machine Learning Studio (클래식): 실험

  5. 캔버스의 데이터 분할 항목이 선택 된 상태에서 오른쪽 패널의 첫 번째 출력 데이터 집합에 있는 행의 비율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. 이렇게 하면 데이터는 두 부분으로 분할 되 고 첫 번째 부분은 데이터의 70% 이며 두 번째 부분은 나머지 30%가 됩니다.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%. 데이터가 무작위로 분할 되도록 하려면 임의 분할 확인란이 선택 되어 있는지 확인 합니다.To ensure that the data is split randomly, make sure the Randomized split checkbox remains checked.

    Machine Learning Studio (클래식): 실험

  6. 캔버스의 ProductsTableCSV 항목 밑에서 분할 된 데이터 항목의 위쪽으로 연결을 끕니다.Drag a connection from the base of the ProductsTableCSV item on the canvas to the top of the Split Data item. 이렇게 하면 항목을 연결 하 고 ProductsTableCSV 데이터 집합 출력 (데이터)을 분할 데이터 입력으로 보냅니다.This will connect the items and send the ProductsTableCSV dataset output (the data) to the Split Data input.

    Machine Learning Studio (클래식): 실험

  7. 왼쪽의 실험 패널에서 Machine Learning > 기차 를 확장 합니다.In the Experiments panel on the left side, expand Machine Learning > Train. 모델 학습 항목을 실험 캔버스로 끌어다 놓습니다.Drag the Train Model item out in to the Experiment canvas. 캔버스는 아래와 동일 하 게 표시 되어야 합니다.Your canvas should look the same as the below.

    Machine Learning Studio (클래식): 실험

  8. _ 분할 데이터 항목 왼쪽 아래 에 있는 연결을 모델 학습 항목의 오른쪽 위에 끌어 놓습니다.From the **bottom left_ of the _* Split Data* item drag a connection to the top right of the Train Model item. 데이터 집합에서 처음 70%의 분할은 학습 모델에서 알고리즘을 학습 하는 데 사용 됩니다.The first 70% split from the dataset will be used by the Train Model to train the algorithm.

    Machine Learning Studio (클래식): 실험

  9. 캔버스에서 모델 학습 항목을 선택 하 고 브라우저 창의 오른쪽에 있는 속성 패널에서 열 선택기 시작 단추를 클릭 합니다.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. 텍스트 상자에 product 를 입력 하 고 enter 키를 누릅니다. 제품 은 예측 학습을 위한 열로 설정 됩니다.In the text box type product and then press Enter, product will be set as a column to train predictions. 이를 수행 하 고 오른쪽 아래 모서리에 있는 을 클릭 하 여 선택 대화 상자를 닫습니다.Following this, click on the tick in the bottom-right corner to close the selection dialog.

    Machine Learning Studio (클래식): 실험

  11. 다중 클래스 로지스틱 회귀 알고리즘을 학습 하 여 시간 및 날짜를 기준으로 가장 많이 판매 되는 제품 을 예측 하려고 합니다.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. Azure Machine Learning studio에서 제공 하는 다양 한 알고리즘에 대 한 세부 정보를 설명 하기 위해이 문서에서는 다루지 않지만 Machine Learning Algorithm 참고 자료 시트 에서 더 많은 정보를 확인할 수 있습니다.It 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. 왼쪽의 실험 항목 패널에서 > 모델 분류 초기화 Machine Learning를 확장 > 하 고 다중 클래스 로지스틱 회귀 항목을 실험 캔버스로 끕니다.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. 다중 클래스 로지스틱 회귀 의 아래쪽에 있는 출력을 모델 학습 항목의 왼쪽 위 입력에 연결 합니다.Connect the output, from the bottom of the Multiclass Logistic Regression, to the top-left input of the Train Model item.

    Machine Learning Studio (클래식): 실험

  14. 왼쪽 패널의 실험 항목 목록에서 Machine Learning > 점수 를 확장 하 고 모델 점수 매기기 항목을 캔버스로 끕니다.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. 학습 모델 의 아래쪽에서 점수 모델 의 왼쪽 위 입력에 출력을 연결 합니다.Connect the output, from the bottom of the Train Model, to the top-left input of the Score Model.

  16. 데이터 분할 에서 오른쪽 아래 출력을 모델 점수 매기기 항목의 오른쪽 위 입력에 연결 합니다.Connect the bottom-right output from Split Data, to the top-right input of the Score Model item.

    Machine Learning Studio (클래식): 실험

  17. 왼쪽 패널의 실험 항목 목록에서 Machine Learning > evaluate 를 확장 하 고 모델 평가 항목을 캔버스로 끌어 놓습니다.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. 점수 모델 의 출력을 평가 모델 의 왼쪽 위 입력에 연결 합니다.Connect the output from the Score Model to the top-left input of the Evaluate Model.

    Machine Learning Studio (클래식): 실험

  19. 첫 번째 Machine Learning 실험을 빌드 했습니다.You have built your first Machine Learning Experiment. 이제 실험을 저장 하 고 실행할 수 있습니다.You can now save and run the experiment. 페이지 아래쪽의 메뉴에서 저장 단추를 클릭 하 여 실험을 저장 한 다음 실행 을 클릭 하 여 실험을 시작 합니다.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.

    Machine Learning Studio (클래식): 실험

  20. 캔버스의 오른쪽 위에서 실험의 상태 를 볼 수 있습니다.You can see the status of the experiment in the top-right of the canvas. 몇 분 정도 기다린 후 실험을 완료할 수 있습니다.Wait a few moments for the experiment to finish.

    실제 데이터 집합이 큰 경우 실험을 실행 하는 데 몇 시간이 걸릴 수 있습니다.If you have a big (real world) dataset it is likely that the experiment could take hours to run.

    Machine Learning Studio (클래식): 실험

  21. 캔버스에서 모델 평가 항목을 마우스 오른쪽 단추로 클릭 하 고 상황에 맞는 메뉴에서 마우스를 클릭 하 여 평가 결과 를 가리킨 다음 시각화 를 선택 합니다.Right click on the Evaluate Model item in the canvas and from the context menu hover the mouse over Evaluation Results, then select Visualize.

    Machine Learning Studio (클래식): 실험

  22. 평가 결과는 예상 결과와 실제 결과를 표시 하는 표시 됩니다.The evaluation results will be displayed showing the predicted outcomes versus the actual outcomes. 이는 이전에 분할 된 원래 데이터 집합의 30%를 사용 하 여 모델을 평가 합니다.This uses the 30% of the original dataset, that was split earlier, for evaluating the model. 결과가 적절 하지 않은 것을 볼 수 있습니다. 이상적으로는 각 행에 있는 가장 큰 숫자를 열에서 강조 표시 된 항목으로 지정할 수 있습니다.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.

    Machine Learning Studio (클래식): 실험

  23. 결과 를 닫습니다.Close the Results.

  24. 새로 학습 된 Machine Learning 모델을 사용 하려면 웹 서비스로 노출 해야 합니다.To use your newly trained Machine Learning model you need to expose it as a Web Service. 이렇게 하려면 페이지 아래쪽의 메뉴에서 웹 서비스 설정 메뉴 항목을 클릭 하 고 예측 웹 서비스 를 클릭 합니다.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.

    Machine Learning Studio (클래식): 실험

  25. 새 탭이 만들어지고 학습 모델을 병합 하 여 새 웹 서비스를 만듭니다.A new tab will be created, and the train model merged to create the new web service.

  26. 페이지 아래쪽의 메뉴에서 저장 을 클릭 한 다음 실행 을 클릭 합니다.In the menu at the bottom of the page click Save, then click Run. 실험 캔버스의 오른쪽 위 모서리에 상태가 업데이트 된 것을 볼 수 있습니다.You will see the status updated in the top-right corner of the experiment canvas.

    Machine Learning Studio (클래식): 실험

  27. 실행이 완료 되 면 웹 서비스 배포 단추가 페이지 아래쪽에 표시 됩니다.Once it has finished running, a Deploy Web Service button will appear at the bottom of the page. 웹 서비스를 배포할 준비가 되었습니다.You are ready to deploy the web service. 페이지 아래쪽의 메뉴에서 웹 서비스 배포 (클래식)를 클릭 합니다.Click Deploy Web Service (Classic) in the menu at the bottom of the page.

    Machine Learning Studio (클래식): 실험

    브라우저에서 허용 해야 하는 팝업을 허용할지 여부를 묻는 메시지가 표시 될 수 있습니다. 단, 배포 페이지가 표시 되지 않는 경우에는 웹 서비스 배포 를 다시 눌러야 할 수 있습니다.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. 실험을 만든 후에는 API 키 를 표시 하는 대시보드 페이지로 리디렉션됩니다.Once the Experiment has been created you will be redirected to a Dashboard page where you will have your API Key displayed. 잠시 동안 메모장에 복사 하 여 코드에서 곧 필요 합니다.Copy it into a notepad for the moment, you will need it in your code very soon. API 키를 적어둔 후에는 키 아래의 기본 끝점 섹션에서 요청/응답 단추를 클릭 합니다.Once you have noted your API Key, click on the REQUEST/RESPONSE button in the Default Endpoint section underneath the Key.

    Machine Learning Studio (클래식): 실험

    참고

    이 페이지에서 테스트를 클릭 하는 경우 입력 데이터를 입력 하 고 출력을 볼 수 있습니다.If you click Test in this page, you will be able to enter input data and view the output. 날짜시간 을 입력 합니다.Enter the day and hour. 제품 항목을 비워 둡니다.Leave the product entry blank. 그런 다음 확인 단추를 클릭 합니다.Then click the Confirm button. 페이지 아래쪽의 출력에는 각 제품의 선택 가능성을 나타내는 JSON이 표시 됩니다.The output on the bottom of the page will show the JSON representing the likelihood of each product being the choice.

  29. 새 웹 페이지가 열리고 Machine Learning Studio (클래식)에서 요구 하는 요청 구조에 대 한 지침 및 몇 가지 예가 표시 됩니다.A new web page will open up, displaying the instructions and some examples about the Request structure required by the Machine Learning Studio (classic). 이 페이지에 표시 된 요청 URI 를 메모장에 복사 합니다.Copy the Request URI displayed in this page, into your notepad.

    Machine Learning Studio (클래식): 실험

이제 연간 시간 및 요일과 상관 관계가 지정 된 구매 데이터를 기반으로 판매 될 가능성이 가장 높은 제품을 제공 하는 기계 학습 시스템을 빌드 했습니다.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.

웹 서비스를 호출 하려면 서비스 끝점에 대 한 URL과 서비스에 대 한 API 키가 필요 합니다.To call the web service, you will need the URL for the service endpoint and an API Key for the service. 상단 메뉴에서 사용 탭을 클릭 합니다.Click on the Consume tab, from the top menu.

소비 정보 페이지에는 코드에서 웹 서비스를 호출 하는 데 필요한 정보가 표시 됩니다.The Consumption Info page will display the information you will need to call the web service from your code. 기본 키요청-응답 URL의 복사본을 가져옵니다.Take a copy of the Primary Key and the Request-Response URL. 다음 장에서 이러한 내용이 필요 합니다.You will need these in the next Chapter.

5 장-Unity 프로젝트 설정Chapter 5 - Setting up the Unity Project

혼합 현실 모던 헤드셋을 설정 하 고 테스트 합니다.Set up and test your Mixed Reality Immersive Headset.

참고

이 과정에서는 동작 컨트롤러가 필요 하지 않습니다.You will not require Motion Controllers for this course. 모던 헤드셋을 설정 하는 데 지원이 필요한 경우 여기를 클릭 하세요.If you need support setting up the Immersive Headset, please click HERE.

  1. Unity 를 열고 MR _ MachineLearning 이라는 새 unity 프로젝트를 만듭니다.Open Unity and create a new Unity Project called MR_MachineLearning. 프로젝트 형식이 3d 로 설정 되었는지 확인 합니다.Make sure the project type is set to 3D.

  2. Unity를 연 상태에서 기본 스크립트 편집기Visual Studio 로 설정 되어 있는지 확인 하는 것이 좋습니다.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. > 기본 설정 편집으로 이동한 다음 새 창에서 외부 도구 로 이동 합니다.Go to Edit > Preferences and then from the new window, navigate to External Tools. 외부 스크립트 편집기Visual Studio 2017 로 변경 합니다.Change External Script Editor to Visual Studio 2017. 기본 설정 창을 닫습니다.Close the Preferences window.

  3. 그런 다음 파일 > 빌드 설정 으로 이동 하 고 *스위치 플랫폼 _ 단추를 클릭 하 여 플랫폼을 유니버설 Windows 플랫폼 로 전환 합니다.Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the *Switch Platform _ button.

  4. 또한 다음을 확인 합니다.Also make sure that:

    1. _ *대상 장치**는 임의의 장치로 설정 됩니다._ Target Device* is set to Any Device.

      Microsoft HoloLens의 경우 대상 장치HoloLens 로 설정 합니다.For the Microsoft HoloLens, set Target Device to HoloLens.

    2. 빌드 형식이 D3D 로 설정 됩니다.Build Type is set to D3D.

    3. SDK최신 설치 로 설정 되어 있습니다.SDK is set to Latest installed.

    4. Visual Studio 버전이 최신 설치 로 설정 되어 있습니다.Visual Studio Version is set to Latest installed.

    5. 빌드 및 실행로컬 컴퓨터 로 설정 됩니다.Build and Run is set to Local Machine.

    6. 나중에 제공 되므로 지금은 장면을 설정 하는 것에 대해 걱정할 필요가 없습니다.Do not worry about setting up Scenes right now, as these are provided later.

    7. 지금은 나머지 설정이 기본값으로 유지 되어야 합니다.The remaining settings should be left as default for now.

      Unity 프로젝트 설정

  5. 빌드 설정 창에서 플레이어 설정 단추를 클릭 하면 검사기 가 있는 공간에서 관련 패널이 열립니다.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. 이 패널에서 몇 가지 설정을 확인 해야 합니다.In this panel, a few settings need to be verified:

    1. 기타 설정 탭에서 다음을 수행 합니다.In the Other Settings tab:

      1. 스크립팅 런타임 버전이 실험적 이어야 함 (.net 4.6 해당)Scripting Runtime Version should be Experimental (.NET 4.6 Equivalent)

      2. Scripting 백엔드 는 *.net _ 이어야 합니다.Scripting Backend should be *.NET _

      3. _ *API 호환성 수준**은 .net 4.6 이어야 합니다._ API Compatibility Level* should be .NET 4.6

        Unity 프로젝트 설정

    2. 게시 설정 탭의 기능 아래에서 다음을 확인 합니다.Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

        Unity 프로젝트 설정

    3. 패널의 아래쪽에서 XR 설정 ( 게시 설정 아래에 있음), 지원 되는 틱 가상 현실, Windows Mixed reality SDK 가 추가 되어 있는지 확인 합니다.Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added

      Unity 프로젝트 설정

  7. 빌드 설정 으로 돌아가기 Unity c # 프로젝트는 더 이상 회색으로 표시 되지 않습니다. 이 옆의 확인란을 선택 합니다.Back in Build Settings Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  8. 빌드 설정 창을 닫습니다.Close the Build Settings window.

  9. 프로젝트를 저장 합니다 (파일 > 프로젝트 저장).Save your Project (FILE > SAVE PROJECT).

6 장-MLProducts Unity 패키지 가져오기Chapter 6 - Importing the MLProducts Unity Package

이 과정에서는 unitypackage라고 하는 Unity 자산 패키지를 다운로드 해야 합니다.For this course, you will need to download a Unity Asset Package called Azure-MR-307.unitypackage. 이 패키지는 미리 작성 된 모든 개체를 포함 하는 장면으로 완료 되며 모든 개체를 작동 하는 데 집중할 수 있습니다.This package comes complete with a scene, with all objects in that prebuilt, so you can focus on getting it all working. ShelfKeeper 스크립트는 제공 되지만 장면 설정 구조를 위해 공용 변수만 보유 합니다.The ShelfKeeper script is provided, though only holds the public variables, for the purpose of scene setup structure. 다른 모든 섹션을 수행 해야 합니다.You will need to do all other sections.

이 패키지를 가져오려면:To import this package:

  1. 앞의 Unity 대시보드를 사용 하 여 화면 위쪽의 메뉴에서 자산 을 클릭 한 다음 패키지 가져오기, 사용자 지정 패키지를 클릭 합니다.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.

    MLProducts Unity 패키지 가져오기

  2. 파일 선택기를 사용 하 여 unitypackage 패키지를 선택 하 고 열기 를 클릭 합니다.Use the file picker to select the Azure-MR-307.unitypackage package and click Open.

  3. 이 자산의 구성 요소 목록이 표시 됩니다.A list of components for this asset will be displayed to you. 가져오기를 클릭 하 여 가져오기를 확인 합니다.Confirm the import by clicking Import.

    MLProducts Unity 패키지 가져오기

  4. 가져오기가 완료 되 면 Unity 프로젝트 패널 에 몇 가지 새 폴더가 표시 됩니다.Once it has finished importing, you will notice that some new folders have appeared in your Unity Project Panel. 이러한 모델은 작업을 수행 하는 미리 작성 된 장면의 일부인 3D 모델 및 해당 재질입니다.Those are the 3D models and the respective materials that are part of the pre-made scene you will work on. 이 과정에서 대부분의 코드를 작성 합니다.You will write the majority of the code in this course.

    MLProducts Unity 패키지 가져오기

  5. 프로젝트 패널 폴더 내에서 장면 폴더를 클릭 하 고 내부 장면 ( MR_MachineLearningScene 이라고 함)을 두 번 클릭 합니다.Within the Project Panel folder, click on the Scenes folder and double click on the scene inside (called MR_MachineLearningScene). 장면이 열립니다 (아래 이미지 참조).The scene will open (see image below). 빨간색 다이아몬드가 없는 경우 게임 패널 의 오른쪽 위에 있는 gizmo 그리려면 단추를 클릭 하면 됩니다.If the red diamonds are missing, simply click the Gizmos button, at the top right of the Game Panel.

    MLProducts Unity 패키지 가져오기

7 장-Unity에서 Dll 검사Chapter 7 - Checking the DLLs in Unity

직렬화 및 역직렬화에 사용 되는 JSON 라이브러리의 사용을 활용 하기 위해 Newtonsoft.json DLL은에서 가져온 패키지를 사용 하 여 구현 되었습니다.To leverage the use of JSON libraries (used for serializing and deserializing), a Newtonsoft DLL has been implemented with the package you brought in. 라이브러리에 올바른 구성이 있어야 합니다 (특히 코드가 작동 하지 않는 문제가 있는 경우).The library should have the correct configuration, though it is worth checking (particularly if you are having issues with code not working).

이를 수행하려면:To do so:

  • 플러그 인 폴더 안의 Newtonsoft.json 파일을 마우스 왼쪽 단추를 클릭 하 고 검사기 패널 을 확인 합니다.Left-click on the Newtonsoft file inside the Plugins folder and look at the Inspector panel. 모든 플랫폼이 선택 인지 확인 합니다.Make sure Any Platform is ticked. UWP 탭 으로 이동 하 여 처리 안 함 이 선택 인지 확인 합니다.Go to the UWP tab and also ensure Don't process is ticked.

    Unity에서 Dll 가져오기

8 장-ShelfKeeper 클래스 만들기Chapter 8 - Create the ShelfKeeper class

ShelfKeeper 클래스는 장면에서 생성 된 UI 및 제품을 제어 하는 메서드를 호스팅합니다.The ShelfKeeper class hosts methods that control the UI and products spawned in the scene.

가져온 패키지의 일부로이 클래스는 완료 되지 않았지만 제공 됩니다.As part of the imported package, you will have been given this class, though it is incomplete. 이제 해당 클래스를 완료 하는 시간입니다.It is now time to complete that class:

  1. Scripts 폴더에서 ShelfKeeper 스크립트를 두 번 클릭 하 여 Visual Studio 2017 을 사용 하 여 엽니다.Double click on the ShelfKeeper script, within the Scripts folder, to open it with Visual Studio 2017.

  2. 스크립트에 있는 모든 코드를 다음 코드로 바꿉니다 .이 코드는 시간 및 날짜를 설정 하 고 메서드를 사용 하 여 제품을 표시 합니다.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. Unity 로 반환 하기 전에 Visual Studio 에서 변경 내용을 저장 해야 합니다.Be sure to save your changes in Visual Studio before returning to Unity.

  4. Unity 편집기로 돌아가서 ShelfKeeper 클래스가 아래와 동일한 지 확인 합니다.Back in the Unity Editor, check that the ShelfKeeper class looks like the below:

    ShelfKeeper 클래스 만들기

    중요

    스크립트에 참조 대상이 없으면 (예: 날짜 (텍스트 메시)) 계층 패널 에서 대상 필드로 해당 개체를 끌어 놓기만 하면 됩니다.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. 필요한 경우 아래에서 설명을 참조 하세요.See below for explanation, if needed:

    1. ShelfKeeper 구성 요소 스크립트를 마우스 왼쪽 단추를 클릭 하 여 생성 지점 배열을 엽니다.Open the Spawn Point array within the ShelfKeeper component script by left-clicking it. 하위 섹션은 배열 크기를 나타내는 size 라는 것으로 나타납니다.A sub-section will appear called Size, which indicates the size of the array. 크기 옆의 텍스트 상자에 3 을 입력 하 고 enter 키를 누릅니다. 그러면 아래에 세 개의 슬롯이 생성 됩니다.Type 3 into the textbox next to Size and press Enter, and three slots will be created beneath.

    2. 계층 구조 내에서 해당 개체 옆에 있는 화살표를 마우스 왼쪽 단추를 클릭 하 여 시간 표시 개체를 확장 합니다.Within the Hierarchy expand the Time Display object (by left-clicking the arrow beside it). 다음으로 _ 계층 구조 내에서 주 카메라 _ 를 클릭 하 여 검사기 가 해당 정보를 표시 하도록 합니다.Next click the *Main Camera_ from within the _* Hierarchy**, so that the Inspector shows its information.

    3. 계층 패널 에서 주 카메라 를 선택 합니다.Select the Main Camera in the Hierarchy Panel. 계층 패널날짜시간 개체를 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. 이미지에 표시 된 것 처럼 계층 패널 ( 선반 개체 아래)의 생성 지점을 3 개의 요소 참조 대상으로 끌어옵니다.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.

      ShelfKeeper 클래스 만들기

9 장-제품 예측 클래스 만들기Chapter 9 - Create the ProductPrediction class

만들려는 다음 클래스는 제품 예측 클래스입니다.The next class you are going to create is the ProductPrediction class.

이 클래스는 다음을 담당 합니다.This class is responsible for:

  • 현재 날짜 및 시간을 제공 하 여 Machine Learning 서비스 인스턴스를 쿼리 합니다.Querying the Machine Learning Service instance, providing the current date and time.

  • JSON 응답을 사용 가능한 데이터로 deserialize 합니다.Deserializing the JSON response into usable data.

  • 데이터 해석, 3 개의 권장 제품 검색Interpreting the data, retrieving the 3 recommended products.

  • ShelfKeeper 클래스 메서드를 호출 하 여 장면의 데이터를 표시 합니다.Calling the ShelfKeeper class methods to display the data in the Scene.

이 클래스를 만들려면:To create this class:

  1. 프로젝트 패널스크립트 폴더로 이동 합니다.Go to the Scripts folder, in the Project Panel.

  2. 폴더 내부를 마우스 오른쪽 단추로 클릭 하 고 > c # 스크립트 를 만듭니다.Right-click inside the folder, Create > C# Script. 스크립트 제품 예측 을 호출 합니다.Call the script ProductPrediction.

  3. 제품 예측 스크립트를 두 번 클릭 하 여 Visual Studio 2017 에서 엽니다.Double click on the new ProductPrediction script to open it with Visual Studio 2017.

  4. 파일 수정이 검색 되었습니다 . 대화 상자가 나타나면 *솔루션 다시 로드 를 클릭 합니다.If the File Modification Detected dialog pops up, click *Reload Solution.

  5. 제품 예측 클래스의 맨 위에 다음 네임 스페이스를 추가 합니다.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. 제품 예측 클래스 내에서 여러 중첩 클래스로 구성 된 다음 두 개체를 삽입 합니다.Inside the ProductPrediction class insert the following two objects which are composed of a number of nested classes. 이러한 클래스는 Machine Learning 서비스에 대 한 JSON을 serialize 및 deserialize 하는 데 사용 됩니다.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. 그런 다음 앞의 코드 위에 다음 변수를 추가 합니다. JSON 관련 코드는 스크립트의 맨 아래, 다른 모든 코드 아래, 그 밖의 코드 아래에 있습니다.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;
    

    중요

    Machine Learning 포털에서 여기에 있는 기본 키요청-응답 끝점 을 변수에 삽입 해야 합니다.Make sure to insert the primary key and request-response endpoint, from the Machine Learning Portal, into the variables here. 아래 이미지는에서 키와 끝점을 가져온 위치를 보여 줍니다.The below images show where you would have taken the key and endpoint from.

    Machine Learning Studio (클래식): 실험

    Machine Learning Studio (클래식): 실험

  8. Start () 메서드 내에이 코드를 삽입 합니다.Insert this code within the Start() method. Start () 메서드는 클래스가 초기화 될 때 호출 됩니다.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. 다음은 Windows에서 날짜 및 시간을 수집 하 고이를 Machine Learning 실험에서 테이블에 저장 된 데이터와 비교 하는 데 사용할 수 있는 형식으로 변환 하는 메서드입니다.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. 이 클래스는 사용 하지 않으므로 Update () 메서드를 삭제할 수 있습니다.You can delete the Update() method since this class will not use it.

  11. 현재 날짜와 시간을 Machine Learning 끝점에 전달 하 고 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. JSON 응답을 deserialize 하 고 deserialization 결과를 ShelfKeeper 클래스에 전달 하는 다음 메서드를 추가 합니다.Add the following method, which is responsible for deserializing the JSON response, and communicating the result of the deserialization to the ShelfKeeper class. 이 결과는 현재 날짜 및 시간에 가장을 판매 하기 위해 예측 된 세 항목의 이름입니다.This result will be the names of the three items predicted to sell the most at current date and time. 이전 메서드 아래의 제품 예측 클래스에 아래 코드를 삽입 합니다.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. Visual Studio 를 저장 하 고 Unity 에 다시 헤드를 저장 합니다.Save Visual Studio and head back to Unity.

  14. 스크립트 폴더의 제품 예측 클래스 스크립트를 기본 카메라 개체로 끌어 놓습니다.Drag the ProductPrediction class script from the Script folder, onto the Main Camera object.

  15. 장면 및 프로젝트 파일 저장 > 장면/파일 > 저장 프로젝트 를 저장 합니다.Save your scene and project File > Save Scene/File > Save Project.

10 장-UWP 솔루션 빌드Chapter 10 - Build the UWP Solution

이제 프로젝트가 독립 실행형 응용 프로그램으로 실행 될 수 있도록 프로젝트를 UWP 솔루션으로 빌드할 시간입니다.It is now time to build your project as a UWP solution, so that it can run as a standalone application.

빌드:To Build:

  1. 파일 > 저장 장면을 클릭 하 여 현재 장면을 저장 합니다.Save the current scene by clicking on File > Save Scenes.

  2. 파일 > 빌드 설정 으로 이동Go to File > Build Settings

  3. Unity c # 프로젝트 라는 상자를 선택 합니다 .이는 빌드를 완료 한 후 클래스를 편집할 수 있도록 하기 때문에 중요 합니다.Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  4. 열려 있는 장면 추가 를 클릭 합니다.Click on Add Open Scenes,

  5. 빌드 를 클릭한 다음Click Build.

    UWP 솔루션 빌드

  6. 솔루션을 빌드하는 데 사용할 폴더를 선택 하 라는 메시지가 표시 됩니다.You will be prompted to select the folder where you want to build the Solution.

  7. 빌드 폴더를 만들고 해당 폴더 내에서 원하는 적절 한 이름을 사용 하 여 다른 폴더를 만듭니다.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  8. 새 폴더를 클릭 한 다음 폴더 선택 을 클릭 하 여 해당 위치에서 빌드를 시작 합니다.Click your new folder and then click Select Folder, to begin the build at that location.

    UWP 솔루션 빌드

    UWP 솔루션 빌드

  9. Unity가 빌드를 완료 하면 (시간이 걸릴 수 있음) 빌드 위치에서 파일 탐색기 창이 열립니다. (작업 표시줄은 항상 창 위에 표시 되는 것은 아니지만 새 창 추가를 알려 줍니다.)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).

11 장-응용 프로그램 배포Chapter 11 - Deploy your Application

응용 프로그램을 배포 하려면:To deploy your application:

  1. 새 Unity 빌드 ( 폴더)로 이동 하 여 Visual Studio 에서 솔루션 파일을 엽니다.Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. Visual Studio를 연 상태에서 NuGet 패키지를 복원 해야 합니다 .이 작업은 솔루션 탐색기 (Visual Studio의 오른쪽에 있음)에서 MachineLearningLab_Build 솔루션을 마우스 오른쪽 단추로 클릭 한 다음 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:

    NuGet 패키지 추가

  3. 솔루션 구성에서 디버그 를 선택 합니다.In the Solution Configuration select Debug.

  4. 솔루션 플랫폼에서 x86, 로컬 컴퓨터 를 선택 합니다.In the Solution Platform, select x86, Local Machine.

    Microsoft HoloLens의 경우 컴퓨터에 테더 링 된 하지 않도록 원격 컴퓨터 를 설정 하는 것이 더 쉬울 수 있습니다.For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. 그러나 다음을 수행 해야 합니다.Though, you will need to also do the following:

    • HoloLens의 IP 주소 를 알고 있습니다 .이 주소는 설정 > 네트워크 & 인터넷 > Wi-Fi > 고급 옵션 에서 찾을 수 있습니다. IPv4는 사용 해야 하는 주소입니다.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.
    • 개발자 모드가 설정 되어 있는지 확인 합니다. 개발자를 위한 업데이트 & 보안 > > 설정 에서 찾을 수 있습니다.Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    NuGet 패키지 추가

  5. 빌드 메뉴로 이동 하 여 솔루션 배포 를 클릭 하 여 응용 프로그램을 PC에 테스트용으로 로드.Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  6. 이제 앱이 설치 된 앱 목록에 표시 되어 시작 될 준비가 되었습니다.Your App should now appear in the list of installed apps, ready to be launched.

Mixed Reality 응용 프로그램을 실행 하는 경우 Unity 장면에 설정 된 도구를 볼 수 있으며, 초기화에서 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. 데이터는 응용 프로그램 내에서 deserialize 되며, 현재 날짜 및 시간에 대 한 세 가지 상위 결과가 시각적으로 제공 됩니다.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.

완성 된 Machine Learning 응용 프로그램Your finished Machine Learning application

축 하 합니다. Azure Machine Learning를 활용 하 여 데이터 예측을 만들고 장면에 표시 하는 혼합 현실 앱을 빌드 했습니다.Congratulations, you built a mixed reality app that leverages the Azure Machine Learning to make data predictions and display it on your scene.

NuGet 패키지 추가

연습Exercise

연습 1Exercise 1

응용 프로그램의 정렬 순서를 실험 하 고이 데이터가 유용할 수 있으므로 세 개의 하위 예측이 선반에 표시 되도록 합니다.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.

연습 2Exercise 2

Azure 테이블 을 사용 하 여 새 테이블에 날씨 정보를 채우고 데이터를 사용 하 여 새 실험을 만듭니다.Using Azure Tables populate a new table with weather information and create a new experiment using the data.