Carregar e classificar os seus próprios conjuntos de dadosLoad and classify your own datasets

Neste pequeno tutorial, vamos aprender a carregar o seu próprio conjunto de dados para treinar um modelo de classificador com o Kit de Desenvolvimento Quântico (QDK).In this short tutorial, we are going to learn how to load your own dataset to train a classifier model with the Quantum Development Kit (QDK).

Recomendamos vivamente a utilização de um formato de serialização padronizado, como ficheiros JSON, para armazenar os seus dados.We highly recommend the use of a standardized serialization format such as JSON files to store your data. Estes formatos oferecem alta compatibilidade com diferentes estruturas como python e o ecossistema .NET.Such formats offer high compatibility with different frameworks like Python and the .NET ecosystem. Em particular, recomendamos a utilização do nosso modelo para o carregamento dos dados, para que possa copiar o código diretamente das amostras.In particular, we recommend using our template for loading the data, so that you can copy-paste the code directly from the samples.

Modelo para carregar os seus conjuntos de dadosTemplate for loading your datasets

Suponha que temos um conjunto de dados de treino $(x, y)$ de tamanho $N=2$ onde cada instância $x_i$ de $x$ tem três características: $x_{i1}$, $x_{i2}$ e $x_{i3}$.Suppose we have a training dataset $(x, y)$ of size $N=2$ where each instance $x_i$ of $x$ has three features: $x_{i1}$, $x_{i2}$ and $x_{i3}$. O conjunto de dados de validação tem a mesma estrutura.The validation dataset has the same structure. Estes datsets podem ser representados por um data.json ficheiro semelhante ao seguinte:These datsets can be represented by a data.json file similar to the following:

{
    "TrainingData": {
        "Features": [
            [
                x_11,
                x_12,
                x_13
            ],
            [
                x_21,
                x_22,
                x_23
            ]
        ],
        "Labels": [
            y_1,
            y_2
        ]
    },
    "ValidationData": {
        "Features": [
            [
                xv_11,
                xv_12,
                xv_13
            ],
            [
                xv_11,
                xv_12,
                xv_13
            ]
        ],
        "Labels": [
            yv_1,
            yv_2
        ]
    }
}

Exemplo usando o modeloExample using the template

Suponha que temos um pequeno conjunto de dados com as alturas e pesos de diferentes gatos e cães.Suppose we have a small dataset with the heights and weights of different cats and dogs. Este conjunto de dados é muito pequeno para treinar um modelo, mas será suficiente para mostrar o processo de carregamento de um conjunto de dados.This dataset is very small to train a model but will be enough to show the process of loading a dataset.

Altura (m)Height (m) Peso (kg)Weight (kg) AnimalAnimal
0,540.54 3030 CãoDog
0.300.30 88 GatoCat
0,910.91 4444 CãoDog
0.860.86 3131 CãoDog
0.320.32 55 GatoCat
0,250.25 44 GatoCat

O processo é:The process is:

  • Primeiro, temos de separar o conjunto de dados em treino e validação.First we need to separate the dataset into training and validation. Neste caso, podemos apenas recolher as três primeiras amostras para o treino e as restantes amostras para validação.In this case we can just take the first three samples for training and the rest of samples for validation. Em geral, é uma boa prática recolher aleatoriamente o conjunto de dados de formação e validação para evitar distorções indesejadas nos dados de formação.In general it is a good practice to sample randomly the training and validation dataset to avoid unwanted biases in the training data.
  • Em segundo lugar, temos de atribuir um rótulo numérico a cada turma.Secondly, we need to assign a numeric label to each class. Note que, para já, a biblioteca QML só admite problemas de classificação binária.Note that, for the moment, the QML library only admits binary classification problems. Por isso, atribuímos a etiqueta 0 à classe Dog e o número 1 à Cat turma.So we will assign the label 0 to the class Dog and the number 1 to the class Cat.
  • Finalmente, preenchemos o modelo usando os dados do nosso conjunto de dados.Finally, we fill the template using the data from our dataset. Note que para os grandes conjuntos de dados deve construir um pequeno script para gerar automaticamente o modelo a partir do seu conjunto de dados específico.Note that for big datasets you should build a small script to automatically generate the template from your specific dataset. Este script dependerá do formato original do seu conjunto de dados.This script will depend on the original format of your dataset.

Para o nosso conjunto de dados, o data.json ficheiro é:For our dataset the data.json file is:

{
    "TrainingData": {
        "Features": [
            [
                0.54,
                30
            ],
            [
                0.30,
                8
            ],
            [
                0.91,
                44
            ]
        ],
        "Labels": [
            0,
            1,
            0
        ]
    },
    "ValidationData": {
        "Features": [
            [
                0.86,
                31
            ],
            [
                0.32,
                5
            ]
            [
                0.25,
                4
            ]
        ],
        "Labels": [
            0,
            1,
            1
        ]
    }
}

Carregar os dadosLoading the data

Uma vez que tenha os seus dados serializados como um ficheiro JSON, pode carregá-lo na utilização de bibliotecas JSON fornecidas com o seu idioma de escolha de anfitrião.Once you have your data serialized as a JSON file, you can load it in using JSON libraries provided with your host language of choice.

Python fornece o json pacote incorporado para trabalhar com dados serializados JSON:Python provides the built-in json package for working with JSON-serialized data:

import json

        data = json.load(f)
    parameter_starting_points = [
        [0.060057, 3.00522,  2.03083,  0.63527,  1.03771, 1.27881, 4.10186,  5.34396],

Passos seguintesNext steps

Agora está pronto para começar a fazer as suas próprias experiências com os seus próprios conjuntos de dados.Now you are ready to start running your own experiments with your own datasets. Experimente diferentes classificadores e conjunto de dados e contribua para que a comunidade partilhe os seus resultados!Try different classifiers and dataset and contribute to the community sharing your results!